POV-Ray : Newsgroups : povray.advanced-users : Tricky object alignment problem Server Time
24 Nov 2024 14:37:37 EST (-0500)
  Tricky object alignment problem (Message 1 to 10 of 14)  
Goto Latest 10 Messages Next 4 Messages >>>
From: Orchid XP v2
Subject: Tricky object alignment problem
Date: 26 May 2006 17:03:16
Message: <44776d14$1@news.povray.org>
OK, have a look at this:

#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

As you can see, this draws a wireframe rectangle between 4 
user-specified points in space.

Assuming that all 4 points are actually co-plannar, what would the *the 
simplest* way to fit a box{} object into the middle of the thing?


Post a reply to this message

From: Warp
Subject: Re: Tricky object alignment problem
Date: 26 May 2006 17:33:21
Message: <44777420@news.povray.org>
Orchid XP v2 <voi### [at] devnull> wrote:
> Assuming that all 4 points are actually co-plannar, what would the *the 
> simplest* way to fit a box{} object into the middle of the thing?

  Actually it's not enough for the points to be coplanar, they must also
form a perfect parallelogram or else 1 box will not do. If the shape is
not a perfect parallelogram then you'll have to use at least the difference
of two or three boxes.

  Of course you could go the easy way and close that object with
polygons or even triangles, unless you really want it to be solid,
in which case you'll have to either go with the boxes or use eg.
planes.

-- 
                                                          - Warp


Post a reply to this message

From: Orchid XP v2
Subject: Re: Tricky object alignment problem
Date: 27 May 2006 07:07:13
Message: <447832e1$1@news.povray.org>
>>Assuming that all 4 points are actually co-plannar, what would the *the 
>>simplest* way to fit a box{} object into the middle of the thing?
> 
> 
>   Actually it's not enough for the points to be coplanar, they must also
> form a perfect parallelogram or else 1 box will not do. If the shape is
> not a perfect parallelogram then you'll have to use at least the difference
> of two or three boxes.
> 
>   Of course you could go the easy way and close that object with
> polygons or even triangles, unless you really want it to be solid,
> in which case you'll have to either go with the boxes or use eg.
> planes.

Used for CSG --> I'd like it to be solid.

Hmm... planes is a good idea though!

(Actually, the code that generates the 4 points guarantees them to form 
a rectangle. To be specific, A and B are identical except for the Z 
coordinate, as are C and D...)


Post a reply to this message

From: Tor Olav Kristensen
Subject: Re: Tricky object alignment problem
Date: 27 May 2006 07:18:50
Message: <4478359a$1@news.povray.org>
Orchid XP v2 wrote:
> OK, have a look at this:
> 
> #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
> 
> As you can see, this draws a wireframe rectangle between 4 
> user-specified points in space.
> 
> Assuming that all 4 points are actually co-plannar, what would the *the 
> simplest* way to fit a box{} object into the middle of the thing?

Use Matrix_Trans() or Shear_Trans()
(These are macros in transforms.inc)

This may also be relevant:

"How to transform a triangle into another", 2. October 2002
http://news.povray.org/povray.text.tutorials/thread/%3C3D9B843D.E5392CD0@hotmail.com%3E
http://tinyurl.com/nwvck

-- 
Tor Olav
http://subcube.com


Post a reply to this message

From: Warp
Subject: Re: Tricky object alignment problem
Date: 27 May 2006 08:17:01
Message: <4478433d@news.povray.org>
Orchid XP v2 <voi### [at] devnull> wrote:
> (Actually, the code that generates the 4 points guarantees them to form 
> a rectangle. To be specific, A and B are identical except for the Z 
> coordinate, as are C and D...)

  I don't think that's a guarantee of rectangularity nor even
parallelogramity.

-- 
                                                          - Warp


Post a reply to this message

From: Warp
Subject: Re: Tricky object alignment problem
Date: 27 May 2006 08:18:20
Message: <4478438c@news.povray.org>
Tor Olav Kristensen <tor### [at] toberemovedgmailcom> wrote:
> > Assuming that all 4 points are actually co-plannar, what would the *the 
> > simplest* way to fit a box{} object into the middle of the thing?

> Use Matrix_Trans() or Shear_Trans()

  That will only work if the points form a perfect parallelogram.

-- 
                                                          - Warp


Post a reply to this message

From: Tor Olav Kristensen
Subject: Re: Tricky object alignment problem
Date: 27 May 2006 08:57:39
Message: <44784cc3$1@news.povray.org>
Warp wrote:
> Tor Olav Kristensen <tor### [at] toberemovedgmailcom> wrote:
>>> Assuming that all 4 points are actually co-plannar, what would the *the 
>>> simplest* way to fit a box{} object into the middle of the thing?
> 
>> Use Matrix_Trans() or Shear_Trans()
> 
>   That will only work if the points form a perfect parallelogram.

Yes, that's true.

(But I assumed that he wanted to use his macro for his wireframe 
letters. See his latest post in povray.binaries.images)

-- 
Tor Olav
http://subcube.com


Post a reply to this message

From: Orchid XP v2
Subject: Re: Tricky object alignment problem
Date: 27 May 2006 10:32:48
Message: <44786310$1@news.povray.org>
>>(Actually, the code that generates the 4 points guarantees them to form 
>>a rectangle. To be specific, A and B are identical except for the Z 
>>coordinate, as are C and D...)
> 
> 
>   I don't think that's a guarantee of rectangularity nor even
> parallelogramity.

Why not?

Oh, did I not mention that A and C have *the same* Z coordinate? (As do 
B and D...)


Post a reply to this message

From: Orchid XP v2
Subject: Re: Tricky object alignment problem
Date: 27 May 2006 10:49:46
Message: <4478670a$1@news.povray.org>
> Use Matrix_Trans() or Shear_Trans()
> (These are macros in transforms.inc)

Thanks for the tip! :-D


Post a reply to this message

From: Orchid XP v2
Subject: A solution
Date: 27 May 2006 11:43:03
Message: <44787387$1@news.povray.org>
This seems to work...

#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

In case it way be of use to anybod else...


Post a reply to this message

Goto Latest 10 Messages Next 4 Messages >>>

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