 |
 |
|
 |
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Could anyone explain to me exactly how one uses the trace() function to
detect object collisions? The docs say that 'trace() can be used to detect
the exact point a ray intersects a surface' and then gives a perfectly
incomprehensible (to me at least) example.
--
//Mahalis
camera{location<0,0.25,-2> look_at 0.5*y} #declare T=texture{pigment{crackle
scale 0.5 rotate 90 turbulence 0.75 color_map{[0 rgb 1][0.05 rgb 1][0.1
rgb<1,0.25,1>][0.25 rgbf 1][1 rgbf 1]}} finish{ambient 1}} #declare
c=difference{torus{0.5,0.1 rotate -90*x}box{<0.7,0,0.2>,<-0.7,-0.7,-0.2>}}
merge{object{c translate<0.5,0.5,0>} object{c translate<-0.5,0.5,0>}
cylinder{<1,0.5,0>,<1,0,0>,0.1} cylinder{<-1,0.5,0>,<-1,0,0>,0.1}
cylinder{0.5*y,0,0.1} texture{T}}
--
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Mahalis wrote:
>
> Could anyone explain to me exactly how one uses the trace() function to
> detect object collisions? The docs say that 'trace() can be used to detect
> the exact point a ray intersects a surface' and then gives a perfectly
> incomprehensible (to me at least) example.
>
You will find une in the insert menu:
// trace function tests for intersection with a specified object
#declare Obj = sphere { 0, 1 }
#declare Norm = <0, 0, 0>;
#declare Start = <0.5, 0.5, 1>;
#declare Pos = trace (
Obj, // object to test
Start, // starting point
-z, // direction
Norm ); // normal
// if intersection is found, normal differs from 0
#if (Norm.x != 0 | Norm.y != 0 | Norm.z != 0)
//...
#end
Christoph
--
Christoph Hormann <chr### [at] gmx de>
IsoWood include, radiosity tutorial, TransSkin and other
things on: http://www.schunter.etc.tu-bs.de/~chris/
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Mahalis <don### [at] fakey com> wrote:
: Could anyone explain to me exactly how one uses the trace() function to
: detect object collisions?
If you mean that you want to detect if an object collided with another
object, regardless of shape, then that's one of the most difficult things
to do. Tracing can help a bit, but that's only perhaps 0.1% of everything you
need for that.
--
#macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
],13),8)-3,10>#end blob{N(array[6]{11117333955,
7382340,3358,3900569407,970,4254934330},0)}// - Warp -
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On Mon, 12 Nov 2001 19:10:25 -0500, "Mahalis" <don### [at] fakey com> wrote:
> Could anyone explain to me exactly how one uses the trace() function to
> detect object collisions? The docs say that 'trace() can be used to detect
> the exact point a ray intersects a surface' and then gives a perfectly
> incomprehensible (to me at least) example.
You are talking about 3.5, right? Check trace.pov and trace2.pov in
POV3.5/scenes/language/ directory.
ABX
--
#declare _=function(a,b,x){((a^2)+(b^2))^.5-x}#default {pigment{color rgb 1}}
union{plane{y,-3}plane{-x,-3}finish{reflection 1 ambient 0}}isosurface{ //ABX
function{_(x-2,y,1)|_((x+y)*.7,z,.1)|_((x+y+2)*.7,z,.1)|_(x/2+y*.8+1.5,z,.1)}
contained_by{box{<0,-3,-.1>,<3,0,.1>}}translate z*15finish{ambient 1}}//POV35
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
I didn't exactly mean 'colliding' as in 'running into'; I meant 'colliding'
as in 'intersecting'.
--
//Mahalis
camera{location<0,0.25,-2> look_at 0.5*y} #declare T=texture{pigment{crackle
scale 0.5 rotate 90 turbulence 0.75 color_map{[0 rgb 1][0.05 rgb 1][0.1
rgb<1,0.25,1>][0.25 rgbf 1][1 rgbf 1]}} finish{ambient 1}} #declare
c=difference{torus{0.5,0.1 rotate -90*x}box{<0.7,0,0.2>,<-0.7,-0.7,-0.2>}}
merge{object{c translate<0.5,0.5,0>} object{c translate<-0.5,0.5,0>}
cylinder{<1,0.5,0>,<1,0,0>,0.1} cylinder{<-1,0.5,0>,<-1,0,0>,0.1}
cylinder{0.5*y,0,0.1} texture{T}}
--
"Warp" <war### [at] tag povray org> wrote in message
news:3bf0d894@news.povray.org...
> Mahalis <don### [at] fakey com> wrote:
> : Could anyone explain to me exactly how one uses the trace() function to
> : detect object collisions?
>
> If you mean that you want to detect if an object collided with another
> object, regardless of shape, then that's one of the most difficult things
> to do. Tracing can help a bit, but that's only perhaps 0.1% of everything
you
> need for that.
>
> --
> #macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
> rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
> ],13),8)-3,10>#end blob{N(array[6]{11117333955,
> 7382340,3358,3900569407,970,4254934330},0)}// - Warp -
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Warp" <war### [at] tag povray org> wrote in message news:3bf0d894@news.povray.org...
> Mahalis <don### [at] fakey com> wrote:
> : Could anyone explain to me exactly how one uses the trace() function to
> : detect object collisions?
>
> If you mean that you want to detect if an object collided with another
> object, regardless of shape, then that's one of the most difficult things
> to do. Tracing can help a bit, but that's only perhaps 0.1% of everything you
> need for that.
>
This reminds me, I just thought of something for my 4.0 wishlist. A function
like inside that works for objects instead of vectors, as in:
#declare A = sphere { 0, 1 }
#declare B = sphere { 0.5*x,1 }
#if (intersect(A,B)) #debug "A intersects B\n" #end
That would make collision detection *much* easier.
Hmmm... is this always guaranteed to work?
#include "stdinc.inc"
#include "shapes.inc"
#declare A = sphere { 0, 1 }
#declare B = box { 2, 3 }
#declare Min = x*0;
#declare Max = x*0;
Extents(intersection { object { A } object { B } }, Min, Max)
#if (!VEq(Max,<10000000000,10000000000,10000000000>)) #debug "A intersects
B\n"
#else #debug "A does not intersect B\n"
#end
#debug concat(VStr(Min), " ", VStr(Max))
I would suppose it depends on what POV-Ray assigns as the Min/Max for a
degenerate bounding box. And if the DBB is always possible to detect.
It appears to work with primatives and small CSGs... but I could be wrong.
Haven't tested it much.
Any thoughts?
Michael
--
#macro M(D)#local J=strlen(D);#local _=""#while(J>0)#local _=concat(_,substr(D
,J,1))#local J=J-1;#end _#end sphere{z*9,5pigment{rgb x}}#macro N(D,J)text{ttf
"timrom.ttf"M(D)1,0 translate-J}#end#macro O(E,K)#local _=N(E,K)light_source{-
z*9rgb 1projected_through{_}}#end O("leahciM"<1.6,-.3.9>)O("nosnhoJ"<1.6.9.9>)
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Mahalis <don### [at] fakey com> wrote:
: I didn't exactly mean 'colliding' as in 'running into'; I meant 'colliding'
: as in 'intersecting'.
The problem is still exactly the same and exactly as difficult.
--
#macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
],13),8)-3,10>#end blob{N(array[6]{11117333955,
7382340,3358,3900569407,970,4254934330},0)}// - Warp -
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Redbeard <red### [at] wv adelphia net> wrote:
: This reminds me, I just thought of something for my 4.0 wishlist. A function
: like inside that works for objects instead of vectors, as in:
: #declare A = sphere { 0, 1 }
: #declare B = sphere { 0.5*x,1 }
: #if (intersect(A,B)) #debug "A intersects B\n" #end
As I said, that's extremely difficult to implement for any given object.
Of course it's trivial for spheres, but if you want to support any object,
you are approximating the impossible.
: Extents(intersection { object { A } object { B } }, Min, Max)
Note that even if the bounding boxes of the objects intersect, that doesn't
mean that the objects themselves do.
: It appears to work with primatives
Again that word...
--
#macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
],13),8)-3,10>#end blob{N(array[6]{11117333955,
7382340,3358,3900569407,970,4254934330},0)}// - Warp -
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Warp wrote:
> : It appears to work with primatives
>
> Again that word...
I'll teach them to stop using "that" word if you stop using "drastical" :)
--
Ken Tyler
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Ken <tyl### [at] pacbell net> wrote:
: I'll teach them to stop using "that" word if you stop using "drastical" :)
Some english words confuse me a lot.
The word "drastically" exists. By logic, it would come from the word
"drastical" (drastical + ly = drastically).
But no, it comes from the word "drastic".
By reverse logic, it would mean that drastic + ly = drasticly.
But no, it's drastic + ly = drasticALly.
It makes no sense.
--
#macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
],13),8)-3,10>#end blob{N(array[6]{11117333955,
7382340,3358,3900569407,970,4254934330},0)}// - Warp -
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Warp wrote:
>
> Ken <tyl### [at] pacbell net> wrote:
> : I'll teach them to stop using "that" word if you stop using "drastical" :)
>
> Some english words confuse me a lot.
> The word "drastically" exists. By logic, it would come from the word
> "drastical" (drastical + ly = drastically).
> But no, it comes from the word "drastic".
> By reverse logic, it would mean that drastic + ly = drasticly.
> But no, it's drastic + ly = drasticALly.
> It makes no sense.
And primitive is often pronounced prim.a.tive so it is somewhat understandable
that people will spell it like they speak it. It is a common problem with the
english language and with those who try to spell it like they speak it.
Followup-To: p.o-t
--
Ken Tyler
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Warp" <war### [at] tag povray org> wrote in message news:3bf216a9@news.povray.org...
> Ken <tyl### [at] pacbell net> wrote:
> : I'll teach them to stop using "that" word if you stop using "drastical" :)
>
> Some english words confuse me a lot.
> The word "drastically" exists. By logic, it would come from the word
> "drastical" (drastical + ly = drastically).
> But no, it comes from the word "drastic".
> By reverse logic, it would mean that drastic + ly = drasticly.
> But no, it's drastic + ly = drasticALly.
> It makes no sense.
Sure it does.
It's 'drastic' + '- ally'.
'Drastic' is an adjective. Adding the suffix '-ally' makes it an adverb.
A 'drastical' (or drasticle) would be a neologistic noun representing
that which is a particle of drasticness.
'-ally' is the suffix used to make an adverb from an adjective that
ends in '-ic' when there is no '-ical' form.
Incidentally (and not accidentally), these grammaricals arose from
borrowed Greek. (See? There is no 'incidentical' or 'accidentical' -
those words sound wrong, eh?).
"English makes sense except when it doesn't".
Just to round things off -
'Identical" is an adjective. The word ends in '-ical', The adverb
formed from 'identical' is 'identically'. In this case it is the suffix '-ly'
added to the '-ical' adjective to make the adverb. Sometimes it is hard to
tell if the adverbial suffix appended to an adjective is '-ly' or '-ally'.
So, why is drastic - 'drastic' and identical is not 'identic' ? I don't know,
it's all Greek to me. What's worse is that 'identic' exists as an adjective, but
means something completely different than 'identical'. ('identic' is a
diplomatic
term used diplomatically by diplomats in a diplomatical manner.)
These -ics, -icals, -lys, and -allys are everywhere.
It almost seems conspiratorical.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
pan### [at] syix com wrote:
: "English makes sense except when it doesn't".
That sums it up. :)
--
#macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
],13),8)-3,10>#end blob{N(array[6]{11117333955,
7382340,3358,3900569407,970,4254934330},0)}// - Warp -
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On Tue, 13 Nov 2001 23:16:02 -0500, "Redbeard" <red### [at] wv adelphia net> wrote:
> Hmmm... is this always guaranteed to work?
of course not
just check this with
#declare A = plane { x, 1 }
#declare B = plane { -x, 0 }
I can propose rather such macros (below). It is not tested hardly but seems
work. It could be extended with another level - sampled value for random points
(in bound) of function{pattern{object{I}}}.
I wonder what should be result for plane{x,1} and plane{x,0} ?
Your and mine returns "no intersection", but is it true ?
// A - first object
// B - second object
// S - sampling level
#macro Colision_Detection(A,B,S)
#local I=intersection{object{A}object{B}};
#declare Min=min_extent(I);
#declare Max=max_extent(I);
#local K=0;
#local Found=Sample_Detection(
<Min.x-.1,Min.y,Min.z>,
<Min.x-.1,Max.y,Min.z>,
<Min.x-.1,Max.y,Max.z>,
<Min.x-.1,Min.y,Max.z>,
x,S-1);
#if(!Found)
#local Found=Sample_Detection(
<Min.x,Min.y-.1,Min.z>,
<Max.x,Min.y-.1,Min.z>,
<Max.x,Min.y-.1,Max.z>,
<Min.x,Min.y-.1,Max.z>,
y,S-1);
#end
#if(!Found)
#local Found=Sample_Detection(
<Min.x,Min.y,Min.z-.1>,
<Min.x,Max.y,Min.z-.1>,
<Max.x,Max.y,Min.z-.1>,
<Max.x,Min.y,Min.z-.1>,
z,S-1);
#end
#debug concat("Sampling called ",str(K,0,0)," times\n")
(Found?true:false)
#end
// check ray sended from center of quad <P1,P2,P3,P4> in direction D
// if level S>0 then send subsample
#macro Sample_Detection(P1,P2,P3,P4,D,S)
#local N=y;
#local C=(P1-P3)/2;
#local T=trace(I,C,D,N);
#if(!(N.x=0 & N.y=0 & N.z=0))
#local Found=true;
#else
#if(S<0)
#local Found=false;
#else
#local Found=Sample_Detection(P1,(P1+P2)/2,C,(P1+P4)/2,D,S-1);
#if(!Found)
#local Found=Sample_Detection((P1+P2)/2,P2,(P2+P3)/2,C,D,S-1);
#end
#if(!Found)
#local Found=Sample_Detection(C,(P2+P3)/2,P3,(P3+P4)/2,D,S-1);
#end
#if(!Found)
#local Found=Sample_Detection((P1+P4)/2,C,(P3+P4)/2,P4,D,S-1);
#end
#end
#end
#declare K=K+1;
(Found?true:false)
#end
ABX
--
#declare _=function(a,b,x){((a^2)+(b^2))^.5-x}#default {pigment{color rgb 1}}
union{plane{y,-3}plane{-x,-3}finish{reflection 1 ambient 0}}isosurface{ //ABX
function{_(x-2,y,1)|_((x+y)*.7,z,.1)|_((x+y+2)*.7,z,.1)|_(x/2+y*.8+1.5,z,.1)}
contained_by{box{<0,-3,-.1>,<3,0,.1>}}translate z*15finish{ambient 1}}//POV35
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
That's English for ya... ;-)
--
//Mahalis
camera{location<0,0.25,-2> look_at 0.5*y} #declare T=texture{pigment{crackle
scale 0.5 rotate 90 turbulence 0.75 color_map{[0 rgb 1][0.05 rgb 1][0.1
rgb<1,0.25,1>][0.25 rgbf 1][1 rgbf 1]}} finish{ambient 1}} #declare
c=difference{torus{0.5,0.1 rotate -90*x}box{<0.7,0,0.2>,<-0.7,-0.7,-0.2>}}
merge{object{c translate<0.5,0.5,0>} object{c translate<-0.5,0.5,0>}
cylinder{<1,0.5,0>,<1,0,0>,0.1} cylinder{<-1,0.5,0>,<-1,0,0>,0.1}
cylinder{0.5*y,0,0.1} texture{T}}
--
> But no, it's drastic + ly = drasticALly.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Mahalis" <don### [at] fakey com> wrote :
>
> That's English for ya... ;-)
Problem is... that's
French-German-Spanish-Latin-Greekitalianswedishdutchrussianhebrewjapaneseame
ricanindianetc for ya...
If we had one history or origin or if it were made instead of grown, it
would not be so confusing.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Warp" <war### [at] tag povray org> wrote in message news:3bf210f9@news.povray.org...
> Redbeard <red### [at] wv adelphia net> wrote:
> : It appears to work with primatives
>
> Again that word...
Ooops. Doesn't even look right to my eye. But the fingers move faster than the
brain, sometimes.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Bill DeWitt scribis news:3bf277ca$1@news.povray.org:
> If we had one history or origin or if it were made instead of
> grown, it
> would not be so confusing.
>
Try a "made" language then. Several exist. Anything from Klingon to
Atlantian. There are several clubs that for the "speaking" population to
get together at/with and have fun.
My favorite is Esperanto. Is a small group here in D.C. that My daughter
and I go to. My daughter is at the "conversation" level, but I am at the
"scratch my head and don't say anything" level. The day will come when I
will be able to speak with confidance, but that is a long ways away.
--
Gis posta, Arto.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Arthur Flint" <mra### [at] chesapeake net> wrote in message
news:Xns### [at] 204 213 191 226...
> Bill DeWitt scribis news:3bf277ca$1@news.povray.org:
>
> > If we had one history or origin or if it were made instead of
> > grown, it
> > would not be so confusing.
> >
>
> Try a "made" language then. Several exist. Anything from Klingon to
> Atlantian. There are several clubs that for the "speaking" population to
> get together at/with and have fun.
>
> My favorite is Esperanto. Is a small group here in D.C. that My daughter
> and I go to. My daughter is at the "conversation" level, but I am at the
> "scratch my head and don't say anything" level. The day will come when I
> will be able to speak with confidance, but that is a long ways away.
I'd love to get to conversation level with ancient Greek but I don't know anyone
else that speaks the language...
- Nekar
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.286 / Virus Database: 152 - Release Date: 2001/10/09
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"W³odzimierz ABX Skiba" <abx### [at] babilon org> wrote in message
news:ncd4vt4iprte5bjhvfnmbbo4pq222vj6b4@4ax.com...
> On Tue, 13 Nov 2001 23:16:02 -0500, "Redbeard" <red### [at] wv adelphia net>
wrote:
> > Hmmm... is this always guaranteed to work?
>
> of course not
Yeah, I didn't figure it would.
Michael
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Nekar Xenos wrote:
> I'd love to get to conversation level with ancient Greek but I don't know anyone
> else that speaks the language...
Ask around of the staff at some Protestant churches in your area. At least here in
the states that is a language usually learned in seminary.
--
Jon A. Cruz
http://www.geocities.com/joncruz/action.html
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Arthur Flint wrote:
> Bill DeWitt scribis news:3bf277ca$1@news.povray.org:
>
> > If we had one history or origin or if it were made instead of
> > grown, it
> > would not be so confusing.
> >
>
> Try a "made" language then. Several exist. Anything from Klingon to
> Atlantian. There are several clubs that for the "speaking" population to
> get together at/with and have fun.
You forgot to mention the languages that Tolkien made. His history for them
is quite interesting also.
--
Jon A. Cruz
http://www.geocities.com/joncruz/action.html
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Arthur Flint" <mra### [at] chesapeake net> wrote :
>
> My favorite is Esperanto.
That's on my list. I hear it is fairly simple to learn if you are a
Latin-based native speaker.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Bill DeWitt scribis news:3bf3f42e$1@news.povray.org:
>
> "Arthur Flint" <mra### [at] chesapeake net> wrote :
>>
>> My favorite is Esperanto.
>
> That's on my list. I hear it is fairly simple to learn if you are a
> Latin-based native speaker.
>
Here is a translation (of sorts) of your comment.
Tio estas je mia listo. Mi audas ke Esperanto estas falica por lerni,se vi
estas Latinderivite indig^ena parolulo.
The language uses an accusitive case for the recipent of the action. So in
one instance " a male dog" could be spelled "hundo" and in another,
"hundon". Means you have to listen verry carefully to how things are said
to catch the meaning.
--
G^is poste, Arto.
(until later, Art)
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Arthur Flint" <mra### [at] chesapeake net> wrote in message
news:Xns### [at] 204 213 191 226...
> Bill DeWitt scribis news:3bf3f42e$1@news.povray.org:
>
> >
> > "Arthur Flint" <mra### [at] chesapeake net> wrote :
> >>
> >> My favorite is Esperanto.
> >
> > That's on my list. I hear it is fairly simple to learn if you are a
> > Latin-based native speaker.
> >
> Here is a translation (of sorts) of your comment.
> Tio estas je mia listo. Mi audas ke Esperanto estas falica por lerni,se vi
> estas Latinderivite indig^ena parolulo.
Well, they gotta fix that ^ business... Other than that, as is true of
french italian and spanish, you can pick out root words and get most of the
meaning.
> --
> G^is poste, Arto.
> (until later, Art)
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On 15 Nov 2001 20:44:25 -0500, Arthur Flint <mra### [at] chesapeake net>
wrote:
>Tio estas je mia listo. Mi audas ke Esperanto estas falica por lerni,se vi
>estas Latinderivite indig^ena parolulo.
A strange mixture of Spanish-, Italian-, Romanian- and Latin-like
ingredients. All Roman languages. BTW should "Latinderivite" really be
a single word?
Peter Popov ICQ : 15002700
Personal e-mail : pet### [at] vip bg
TAG e-mail : pet### [at] tag povray org
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Peter Popov scribis news:i899vtgbsahg9ct49iq0asrahjphpmo8na@4ax.com:
> A strange mixture of Spanish-, Italian-, Romanian- and Latin-like
> ingredients.
All true, with some German and Greek roots in there too.
>All Roman languages. BTW should "Latinderivite" really be a single word?
It could well be as we wern't all too sure how to construct that one. Some
words are constructed by concatanation.
i.e. Mang^o "food" + c^ambro "room" = mang^oc^ambro "dinning room"
--
Gis posta, Arto.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Bill DeWitt scribis news:3bf48d91$1@news.povray.org:
> Well, they gotta fix that ^ business... Other than that, as is true
> of french italian and spanish, you can pick out root words and get
> most of the meaning.
>
It might look better if you could see the characters in proper format.
The "^" should be over the character that it comes after. Until all the
world lives with unicode, that is the best I could do. There is c^, g^, h^,
s^, and a u with a small symbole over it.
--
Gis posta, Arto.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Follow-up set
"Arthur Flint" <mra### [at] chesapeake net> wrote in message
news:Xns### [at] 204 213 191 226...
> Bill DeWitt scribis news:3bf48d91$1@news.povray.org:
> > Well, they gotta fix that ^ business... Other than that, as is true
> > of french italian and spanish, you can pick out root words and get
> > most of the meaning.
> >
> It might look better if you could see the characters in proper format.
> The "^" should be over the character that it comes after. Until all the
> world lives with unicode, that is the best I could do. There is c^, g^,
h^,
> s^, and a u with a small symbole over it.
I went through and set up two letter combinations for every phoneme I
could find and pronounce (for my own constructed language), using standard
American English character pronunciations. It seems like the folk who
developed Esperanto could have done something similar.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Wasn't it Mahalis who wrote:
>Could anyone explain to me exactly how one uses the trace() function to
>detect object collisions? The docs say that 'trace() can be used to detect
>the exact point a ray intersects a surface' and then gives a perfectly
>incomprehensible (to me at least) example.
It occurred to me that it ought to be possible to detect whether two
convex objects had collided by tracing in both directions along the line
that joins their centres.
Consider two convex objects that are not touching. As we look along the
line that joins their centres we encounter the significant points in the
following order:-
Centre of object 1
Surface of object 1
Surface of object 2
Centre of object 2
If the objects are moved closer so that they intersect, then the order
changes to
Centre of object 1
Surface of object 2
Surface of object 1
Centre of object 2
(With concave objects all bets are off. It's possible for two concave
objects to touch at the ends while there is still a gap between them
along the line that joins their centres).
I came up with code that looks like this
// trace object2 from the centre of object 1 and vice verca
#declare Surface2 = trace(Object2, Centre1, (Centre2-Centre1));
#declare Surface1 = trace(Object1, Centre2, (Centre1-Centre2));
// The objects intersect if Surface2 is nearer to Centre1
// than Surface1 is
#if (vlength(Surface2-Centre1) < vlength(Surface1-Centre1))
#debug "They intersect\n"
#else
#debug "They don't\n"
#end
But that code can sometimes give the wrong answer if the objects overlap
to such an extent that the centre of one lies inside the surface of the
other. For example, if the centres are very close the order might be
Surface of Object 1
Centre of Object 1
Centre of Object 2
Surface of Object 2
and the surfaces could be at any distance.
I think that this works
// trace object2 from the centre of object 1 and vice verca
#declare Surface2 = trace(Object2, Centre1, (Centre2-Centre1));
#declare Surface1 = trace(Object1, Centre2, (Centre1-Centre2));
// The objects intersect if the centre-centre distance
// is less than the sum of the centre-surface distances
#if ((vlength(Centre2-Centre1) < (vlength(Surface1-Centre1) +
vlength(Surface2-Centre2))))
#debug "They intersect\n"
#else
#debug "They don't\n"
#end
--
Mike Williams
Gentleman of Leisure
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Mike Williams wrote:
>
> (With concave objects all bets are off. It's possible for two concave
> objects to touch at the ends while there is still a gap between them
> along the line that joins their centres).
I'm wondering, with the centers (Am. sp.) known, if you might not be able to
use max_extents to learn where the outer edge of the object lies...
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|
 |