|
|
Orchid XP v2 wrote:
> This seems to work...
>
> In case it way be of use to anybod else...
Could you provide an example of use? I can't get it to work in the test
scene below. Granted, it doesn't use a parallelogram, but it looks like it
is meant to handle other coplanar points too. Besides, doesn't work with a
parallelogram either. If you really need it for parallelograms only, then I
can think of a simpler solution that uses a box instead of a prism.
#include "transforms.inc"
#macro Rectangle(A, B, C, D, r)
sphere {A, r}
sphere {B, r}
sphere {C, r}
sphere {D, r}
cylinder {A, B, r}
cylinder {B, C, r}
cylinder {C, D, r}
cylinder {D, A, r}
#end
#macro DrawPoly(Points, Radius)
#local A = Points[0];
#local B = Points[1];
#local C = Points[2];
#local AB = B - A;
#local AC = C - A;
#local Norm = vnormalize(vcross(AB, AC));
#local V1 = Norm;
#local V2 = vnormalize(AB);
#local V3 = vcross(V1, V2);
prism
{
linear_sweep
linear_spline
-Radius, +Radius, dimension_size(Points, 1),
#local lp = 0;
#while (lp < dimension_size(Points, 1))
<vdot(V3, Points[lp]), vdot(V2, Points[lp])>
#local lp = lp + 1;
#end
translate +y*vdot(A, Norm)
Reorient_Trans(y, Norm)
}
#end
#declare Points = array[4] {<-1,-1,0>, <1,-2,1>, <1,2,1>, <-1,2,0>}
camera {location -6*z}
light_source {<-1,2,-3>*1000, color rgb 1}
union {
Rectangle(Points[0],Points[1],Points[2],Points[3], 0.3)
DrawPoly(Points, 0.3)
pigment {rgb 1}
}
Rune
--
http://runevision.com
Post a reply to this message
|
|