POV-Ray : Newsgroups : povray.international : [pl] wektor normalny? : Re: [pl] wektor normalny? Server Time
5 May 2024 18:03:34 EDT (-0400)
  Re: [pl] wektor normalny?  
From: ABX
Date: 26 May 2003 05:12:36
Message: <aik3dvsf7hitmu0o652t9lgp9b2e0ivgr6@4ax.com>
On Mon, 26 May 2003 10:17:59 +0200, Wojtek Ptak <pta### [at] tlenpl> wrote:
> Na Ciebie wła¶nie  liczyłem :)

Do uslug :)

> Hmm. Nie wiem. Podaję wektor normalny fakt... Chyba wiem o co chodzi. 
> Tzn. je¶li chcę obłożyć połówkę kuli powiedzmy lusterkami (odpowiednie 
> box-y), to nie da się podać wektor normalny od kierunku patrzenia

Czy przez "wektor normalny do kierunku patrzenia" rozumiesz kierunek w którym
wysylasz promien do kuli ?

> i po 
> otrzymaniu punktu na kuli położyć tam pod odpowidnim k±tem boxa - k±tem 
> pobranym w jakis sposob poprzez podanie obiektu, i punktu na nim?

ale przeciez wlasnie ten kat zwracany jest w czwartyym parametrze funkcji
trace().

> O ile dobrze podejrzewam to muszę oblecieć kulę za pomoc± trace pod 
> różnymi k±tami i i dla kazdego kata przykladac lusterko?...
> Chciałem obłożyć napis w ten prosty sposób. Pokrycie tekstu kulkami jest 
> oczywi¶cie ok. Ale pokrycie napisu innym obiektem...
> Czyżby więc odpowiednie "zeskanowanie" obiektu w 360 stopniach bylo 
> jedynym rozwi±zaniem?

Mam przeczucie ze nie rozumiem jaki efekt chcesz uzyskac. Czy chcesz oblozyc
obiekt lusterkami na calej jego powierzchni czy na powierzchni widzianej z
miejsca polozenia kamery ? Jesli to pierwsze to musisz wywolac trace() "na
okolo", jezeli to drugie to wystarczy wolac trace() z jednego punktu.

Ponizej przykladowy skrypt. Zastanów sie nad petla na koncu - staralem sie
opisac zmienne w miare logicznie. Pytaj, jesli nadal cos niejasne.

#version 3.5;

#include "colors.inc"
#include "functions.inc"
#include "rand.inc"

global_settings { assumed_gamma 1.0 }

camera {
  location  <0.0, 0.5, -4.0>
  direction 1.5*z
  right     x*image_width/image_height
  look_at   <0.0, 0.0,  0.0>
}

sky_sphere {
  pigment {
    gradient y
    color_map {
      [0.0 rgb <0.6,0.7,1.0>]
      [0.7 rgb <0.0,0.1,0.8>]
    }
  }
}

light_source { <-30, 30, -30> rgb 1 }

plane { y, -1 pigment { color rgb <0.7,0.5,0.3> } }

#declare Srodek = <0,0,0>;

#local Sphere=isosurface {
  function{f_sphere(x,y,z,.5)+f_bumps(x*3,y*3,z*3)/3}
  max_gradient 2
  scale 2
  texture {
    pigment {color rgb <0.2,0.4,1.0> }
    finish{specular 0.6}
  }
  translate Srodek
}

object{Sphere}

#declare Generator = seed(10);
#declare C=0;
#while(C<1000)
  #declare Start=10*VRand_On_Sphere(Generator);
  #declare Start=<abs(Start.x),Start.y,Start.z>;
  #declare Kierunek = Srodek-Start;
  #declare Normalna_Powierzchni = <0,0,0>;
  #declare Punkt_Przeciecia=
    trace ( Sphere, Start, Kierunek, Normalna_Powierzchni ); 
  // Jesli przeciecie mialo miejsce to Normalna_Powierzchni
  // nie jest wektorem zerowym
  #if (vlength(Normalna_Powierzchni)!=0) 
    cone { 
      Punkt_Przeciecia, .01 , Punkt_Przeciecia + Normalna_Powierzchni / 10, 0
      texture { pigment {color red 1} } 
    } 
  #end
  #declare C=C+1;
#end

ABX


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.