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

Reply via email to