|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Hello, the name is Matt, and this is my first post in the advanced user
area. Normally I am found asking annoying questions in the newuers
area, but I feel that this question may be enough to bump me up a level,
at least temporarily.
So here is the question(s):
How would one get the directional vector of an object so that the vector
would lead an object directly away from the surface of the first one.
This probably sounds confusing, so here is an example. We have a torus,
and a point on the torus, which well call v1. How would I get a
vector(v2) that if added to the vector(v1) of the point on the torus,
and used for a cylinder would create a spikey torus with cylinders
alawys pointing away from the surface. I know that for this example I
could just use a bigger torus and find the size ratio to locate certain
points on the fatter, larger torus and use those, but I actually have
something more complex on mind, so I was hoping you could help with that.
A second, similar question has been plaguing me. This should perhaps go
into the programming section, so if no one answers me, or anyone
repremands me, I will repost it there. I am working on my own
raytracer, currently just pseudo-code. How would I find, using
mathmatical terms here, the angle that a ray reflects off a surface? It
is somewhat similar, but the ray may be coming off an angle, so theres
gotta be some difference. Any help with this would be great, I did
check the source code, and found it to be rather sloppy and poorly
documented for semi-professional software (no offence to anyone, my code
is usually worse).
Thanks to all who help out here!
~matt
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Hi Matt,
because you asked in the advanced-users group,
I assume short answers will suffice ;-)
First question:
You are actually asking for the normal of an object at v1: use trace()
to shoot a ray at v1 and get the normal (your v2) at this point.
(look for trace at "6.1.4.6 Vector Functions")
Second question:
The Advanced Tutorial ("4.2 POV-Ray SDL tutorial: A raytracer")
should give you some hints, esp. "4.2.3 Short introduction to
raytracing" and "4.2.7 Ray-sphere intersection"
Sputnik
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
In article <3fb2f6a0$1@news.povray.org>,
> Hi Matt,
>
> because you asked in the advanced-users group,
> I assume short answers will suffice ;-)
as long as its more than 3 words ;-)
> First question:
> You are actually asking for the normal of an object at v1: use trace()
> to shoot a ray at v1 and get the normal (your v2) at this point.
> (look for trace at "6.1.4.6 Vector Functions")
Ah, I have heard of good reviews of trace(), I shall check it out and
see what it can do for me. I did not know, however, that a normal was
simply the way the reflection, although I guess it makes sense.
>
> Second question:
> The Advanced Tutorial ("4.2 POV-Ray SDL tutorial: A raytracer")
> should give you some hints, esp. "4.2.3 Short introduction to
> raytracing" and "4.2.7 Ray-sphere intersection"
Thanks, I shall check that out as well. I had skimmed over the SDL
tutorial, but left when I realized it was over my head at the time.
> Sputnik
Thanks Sputnik
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Is there another way to do question 1? I am asking becuase I am
creating my own fur macros (for the experience and bragging rights),
and using trace() seems like a hassle because of all the times I would
have to adjust the start vector. Any other suggestions would be greatly
appreciated.
Thanks!
~matt
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
In article <mat### [at] netplexaussieorg>,
Matthew Pace <mat### [at] lycoscom> wrote:
> > First question:
> > You are actually asking for the normal of an object at v1: use trace()
> > to shoot a ray at v1 and get the normal (your v2) at this point.
> > (look for trace at "6.1.4.6 Vector Functions")
>
> Ah, I have heard of good reviews of trace(), I shall check it out and
> see what it can do for me. I did not know, however, that a normal was
> simply the way the reflection, although I guess it makes sense.
The normal is perpendicular to the surface, which is what I suppose you
meant by "opposite" to the surface. It isn't the direction of a
reflection, though it bisects the direction the incoming ray comes from
and the direction the reflected ray goes.
--
Christopher James Huff <cja### [at] earthlinknet>
http://home.earthlink.net/~cjameshuff/
POV-Ray TAG: chr### [at] tagpovrayorg
http://tag.povray.org/
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
In article <mat### [at] netplexaussieorg>,
Matthew Pace <mat### [at] lycoscom> wrote:
> Is there another way to do question 1? I am asking becuase I am
> creating my own fur macros (for the experience and bragging rights),
> and using trace() seems like a hassle because of all the times I would
> have to adjust the start vector. Any other suggestions would be greatly
> appreciated.
Your objection doesn't really make any sense. You have to sample
multiple points anyway. There's no way to get the normal at a point
without that point.
Or do you already have a point on the surface of the object? In that
case, if the object is simple enough, you can just figure it out from
the type of object and the point. For example, the normal at a point on
the surface of a sphere is that point minus the center of the sphere.
This is a far less general solution, since you have to figure it out for
the specific object you're using, and that can sometimes be very
difficult. It also requires you to already have a point on the surface
of the object.
--
Christopher James Huff <cja### [at] earthlinknet>
http://home.earthlink.net/~cjameshuff/
POV-Ray TAG: chr### [at] tagpovrayorg
http://tag.povray.org/
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Matthew Pace <mat### [at] lycoscom> wrote:
> I did not know, however, that a normal was
> simply the way the reflection, although I guess it makes sense.
Nope, it doesn't make sense because the reflected vector and the normal
vector are two completely different vectors.
The reflected vector leaves the surface with the same angle as the
incoming ray. That is, if the incoming ray hit the surface at an angle
of 10 degrees, the reflected vector leaves the surface at an angle of 10
degrees.
A normal vector is perpendicular (ie. at 90 degrees) to the surface and
completely independent of any incoming ray.
--
#macro M(A,N,D,L)plane{-z,-9pigment{mandel L*9translate N color_map{[0rgb x]
[1rgb 9]}scale<D,D*3D>*1e3}rotate y*A*8}#end M(-3<1.206434.28623>70,7)M(
-1<.7438.1795>1,20)M(1<.77595.13699>30,20)M(3<.75923.07145>80,99)// - Warp -
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Ok, I think I understand it now. The terminology tricked me at first,
but yes, a normal was what I am looking for, given the point on the
surface. I should be able to handle it now, although I think that this
may be a bit too advanced for my skill level right now. Thanks a lot
for the help and patience.
~matt
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|