The last line should be R>: ... . Otherwise you just test whether R is greater than 1.
Marshall -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of R.E. Boss Sent: Friday, October 08, 2010 4:39 AM To: 'Programming forum' Subject: Re: [Jprogramming] Puzzle: line-circle/sphere intersection intrsct=: 4 : 0 R =. x 'C S E'=.y t=. -(S-C) (+/@:* % ] +/@:* ]) E-S P=. S + t * E - S NB. perihelion R>= +/&.:*: (-&C) (S,P,:E) {~ (0 < t) + 1 < t ) 2 intrsct 0 0 0;2 1 1;2 2 2 1 R.E. Boss -----Oorspronkelijk bericht----- Van: [email protected] [mailto:[email protected]] Namens R.E. Boss Verzonden: donderdag 7 oktober 2010 13:52 Aan: 'Programming forum' Onderwerp: Re: [Jprogramming] Puzzle: line-circle/sphere intersection That was bad reading from my side. The formulas should be: ((S-C)<R)*.((E-C)<R) -...@+. ((S-C)>R)*.((E-C)>R) D=: +&.*:/"1 (S,:E)-"1 C (D<R) -...@+.&(*./) D>R Apart from that, the mathematics is not correct either. I will give it another thought. R.E. Boss > -----Oorspronkelijk bericht----- > Van: [email protected] [mailto:programming- > [email protected]] Namens Bo Jacoby > Verzonden: donderdag 7 oktober 2010 13:02 > Aan: Programming forum > Onderwerp: Re: [Jprogramming] Puzzle: line-circle/sphere intersection > > Hello Boss. > > I do not understand your notation. Henry wrote "startpoint S and > endpoint E". You wrote "endpoints A and B", but you use E in your pseudo code. > Please explain. > > It seems to me that you must compute the distances (s) from C to S, > (e) from C to E and (p) from C to the closest point P, (the > perihelion), and you must determine (b) if P is between S and E. > Intersection occurs if (s<R and e>R) or (s>R and e<R) or (b and p<R and (s>R or e>R)). > > --- Den tors 7/10/10 skrev R.E. Boss <[email protected]>: > > Fra: R.E. Boss <[email protected]> > Emne: Re: [Jprogramming] Puzzle: line-circle/sphere intersection > Til: "'Programming forum'" <[email protected]> > Dato: torsdag 7. oktober 2010 09.49 > > Since the word 'intersect' is used, I assume you mean the boundary of > the circle/sphere (and not the area), so that a line segment which is > completely inside is not intersecting. One point at the boundary means > intersecting, I assume. > So the segment is not intersecting if and only if it is completely > inside or completely outside the circle/sphere. > > > If the line segment is given by the endpoints A and B, the pseudo code > is rather straightforward: > > ((A-E)<R)*.((B-E)<R) -...@+. ((A-E)>R)*.((B-E)>R) > > so ones gets > > D=: +&.*:/"1 (A,:B)-"1 E > > (D<R) -...@+.&(*./) D>R > > (untested) > > > R.E. Boss > > > > -----Oorspronkelijk bericht----- > > Van: [email protected] [mailto:programming- > > [email protected]] Namens Henry Rich > > Verzonden: woensdag 6 oktober 2010 22:54 > > Aan: Programming forum > > Onderwerp: [Jprogramming] Puzzle: line-circle/sphere intersection > > > > Given circle/sphere with center C and radius R, and a line-segment > > with startpoint S and endpoint E, write the J code to tell whether > > the line-segment intersects the circle/sphere. > > > > R is an atom, the rest are lists with 2 or 3 atoms. > > > > This problem arises in collision detection for games and simulators, > > or if you are trying to see whether a path intersects a round obstacle. > > > > I found a solution whose brevity surprised me. > > > > Henry Rich > > -------------------------------------------------------------------- > > -- For information about J forums see > > http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
