|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
[povray virgin warning!]
Hi,
I'm trying to transform objects in some basic CSG (see code below), but I
notice that the transformation only applies to the finished CSG object.
I realize I can do the arc transformation inside the arc macro, and pass a
zillion parameters for rotating, translating, etc, but IMO that's not how
it should be. You can't foresee all possible sequential transformations.
Any help will be greatly appreciated!
Steven
-------------- code start ----------------
#macro arc (H, W, L)
union {
cylinder { <-L / 2, W, 0>, < L / 2, W, 0>, W / 2 }
box { <-L / 2, -.001, -W / 2>, <L / 2, W , W / 2> }
}
#end
difference {
box { <-50, 0, -50>, <50, 0, 50> }
// subtract following
arc (50, 40, 120) // along the x-axis
arc (50, 40, 120) rotate y * 90 // along the z-axis
pigment { Gray85 }
}
---------------- code end ----------------
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"stevenvh" <nomail@nomail> wrote:
> #macro arc (H, W, L)
> union {
> cylinder { <-L / 2, W, 0>, < L / 2, W, 0>, W / 2 }
> box { <-L / 2, -.001, -W / 2>, <L / 2, W , W / 2> }
> }
> #end
>
> difference {
> box { <-50, 0, -50>, <50, 0, 50> }
> // subtract following
> arc (50, 40, 120) // along the x-axis
> arc (50, 40, 120) rotate y * 90 // along the z-axis
>
> pigment { Gray85 }
> }
> ---------------- code end ----------------
Assuming I know what you want to do try invoking your macro within an
object{} block (or even union{} block):
object{arc (50, 40, 120) rotate y * 90}
Then any transforms are isolated from the rest of the object and you don't
need to pass any variables.
-tgq
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
That's it exactly. Thanks, Trevor.
(and quick reply as well!)
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|