POV-Ray : Newsgroups : povray.general : Calculate normal vector? : Re: Calculate normal vector? Server Time
1 Aug 2024 14:31:01 EDT (-0400)
  Re: Calculate normal vector?  
From: Hasan3
Date: 8 Sep 2005 09:45:00
Message: <web.43203f6a92437aab2cd8d46e0@news.povray.org>
"Slime" <fak### [at] emailaddress> wrote:
> > How can I calculate '<0,  0.7071, -0.7071>' SurfaceNormal1 ?
>
> If all you have is a single triangle, you can use any vector for the normal
> of a vertex. Use what looks good.
>
> If you have multiple triangles connected at a single vertex, you typically
> use the average of all of the triangle's normals as the normal for that
> vertex. To do this, you take the normal of each triangle, which can be
> calculated by a cross product between the vectors forming two sides of that
> triangle:
>
> (triangle consists of v1, v2, v3)
> normal = vnormalize(vcross(v2 - v1, v3 - v1));
>
> To get the average of all the triangle's normals, add them together and
> vnormalize() the result.
>
>  - Slime
>  [ http://www.slimeland.com/ ]



Thanks for topiks. is this code correct?


global_settings {
  assumed_gamma 1.5
  max_trace_level 5
  ambient_light rgb< 0.99609375,0.99609375,0.99609375>


}

#include "colors.inc"
#include "textures.inc"
#include "glass.inc"
#include "woods.inc"
#include "shapes.inc"
#include "metals.inc"
#include "woodmaps.inc"
#include "stones.inc"
#include "skies.inc"

//*Işık
//--------------------------------------------------------------
//------------------------------------------------------------------------
  light_source {<-3.9,6.04020933313238,2.5>
        color rgb <1,1,1>*1
    fade_distance 2000
    fade_power 1
  }
//*camera //--------------------------------------------------------------
//------------------------------------------------------------------------
camera {
location  <-8.4612620107387,4.23118150919749,-2.71953991167386>
look_at   <-6.3,1.67916373510155,-0.7>
 }


 #declare Gri = material {
texture {
    pigment {  color rgbf <0.765625,0.765625,0.765625,0>}

 finish{
            ambient 0
            reflection {
            }
    }

}
}
#declare v1=<-6.3,1.67916373510155,-0.1>;
#declare v2=<-5.1,1.60116644662657,-0.1>;
#declare v3=<-4.4,0.327210734868637,0>;
#declare n1=vnormalize(vcross(v2 - v1, v3 - v1));
smooth_triangle  { v1 n1 v2 n1 v3 n1
 material { Gri  scale 1 }

          no_reflection
}
#declare v1=<-7.2,0.561202600293564,0>;
#declare v2=<-6.3,1.67916373510155,-0.1>;
#declare v3=<-4.4,0.327210734868637,0>;
#declare n1=vnormalize(vcross(v2 - v1, v3 - v1));
smooth_triangle  { v1 n1 v2 n1 v3 n1
 material { Gri  scale 1 }

          no_reflection
}
#declare v1=<-7.2,0.561202600293564,0>;
#declare v2=<-7.2,0.561202600293564,-0.8>;
#declare v3=<-6.3,1.67916373510155,-0.7>;
#declare n1=vnormalize(vcross(v2 - v1, v3 - v1));
smooth_triangle  { v1 n1 v2 n1 v3 n1
 material { Gri  scale 1 }

          no_reflection
}
#declare v1=<-6.3,1.67916373510155,-0.1>;
#declare v2=<-7.2,0.561202600293564,0>;
#declare v3=<-6.3,1.67916373510155,-0.7>;
#declare n1=vnormalize(vcross(v2 - v1, v3 - v1));
smooth_triangle  { v1 n1 v2 n1 v3 n1
 material { Gri  scale 1 }

          no_reflection
}
#declare v1=<-5.1,1.60116644662657,-0.1>;
#declare v2=<-6.3,1.67916373510155,-0.1>;
#declare v3=<-6.3,1.67916373510155,-0.7>;
#declare n1=vnormalize(vcross(v2 - v1, v3 - v1));
smooth_triangle  { v1 n1 v2 n1 v3 n1
 material { Gri  scale 1 }

          no_reflection
}
#declare v1=<-5.1,1.60116644662657,-0.1>;
#declare v2=<-6.3,1.67916373510155,-0.7>;
#declare v3=<-5.1,1.60116644662657,-0.7>;
#declare n1=vnormalize(vcross(v2 - v1, v3 - v1));
smooth_triangle  { v1 n1 v2 n1 v3 n1
 material { Gri  scale 1 }

          no_reflection
}
#declare v1=<-5.1,1.60116644662657,-0.1>;
#declare v2=<-5.1,1.60116644662657,-0.7>;
#declare v3=<-4.4,0.327210734868637,-0.8>;
#declare n1=vnormalize(vcross(v2 - v1, v3 - v1));
smooth_triangle  { v1 n1 v2 n1 v3 n1
 material { Gri  scale 1 }

          no_reflection
}
#declare v1=<-4.4,0.327210734868637,0>;
#declare v2=<-5.1,1.60116644662657,-0.1>;
#declare v3=<-4.4,0.327210734868637,-0.8>;
#declare n1=vnormalize(vcross(v2 - v1, v3 - v1));
smooth_triangle  { v1 n1 v2 n1 v3 n1
 material { Gri  scale 1 }

          no_reflection
}
#declare v1=<-5.1,1.60116644662657,-0.7>;
#declare v2=<-6.3,1.67916373510155,-0.7>;
#declare v3=<-4.4,0.327210734868637,-0.8>;
#declare n1=vnormalize(vcross(v2 - v1, v3 - v1));
smooth_triangle  { v1 n1 v2 n1 v3 n1
 material { Gri  scale 1 }

          no_reflection
}
#declare v1=<-6.3,1.67916373510155,-0.7>;
#declare v2=<-7.2,0.561202600293564,-0.8>;
#declare v3=<-4.4,0.327210734868637,-0.8>;
#declare n1=vnormalize(vcross(v2 - v1, v3 - v1));
smooth_triangle  { v1 n1 v2 n1 v3 n1
 material { Gri  scale 1 }

          no_reflection
}


Post a reply to this message

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