I intend that a segment wholly inside the circle/sphere to be counted as intersecting. In other words, the circle/sphere is solid and we want to know if the segment touches any of it.
Henry Rich On 10/7/2010 7:52 AM, R.E. Boss wrote: > 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
