Bravissimo, Marshall.  Your solution is letter-for-letter what I found, 
except that I moved the R >: outside the big verb.  A neat use of %., I 
think.

Thanks Kip, for your parametric approach.  It is beautiful too, 
especially in the way it classifies the solutions into inside 
ball/outside ball/crossing boundary(ies)/misses ball completely.

Henry Rich



On 10/7/2010 4:43 PM, Marshall Lochbaum wrote:
> Alright. Take the projection of the center onto the line segment using %. .
> This is not allowed to be more than 0 or less than 1, so use (0>.1<.]) to
> take the endpoints if it is. Then find this point on the line again and see
> if it is inside the circle.
> C (R>:+/&.:*:)@:([- ]* 0>.1<.%.)&(-&S) E
>
> Not tested yet, but I will update on that...
> Marshall
>
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Henry Rich
> Sent: Thursday, October 07, 2010 7:58 AM
> To: Programming forum
> Subject: Re: [Jprogramming] Puzzle: line-circle/sphere intersection
>
> 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
>
> ----------------------------------------------------------------------
> 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