And he would probably say the sphere with center C and radius R is made up of 
the points P which satisfy

(*: R) = (P - C) o (P - C)  where o is [: +/ *  (could use +/ . *)

a definition that is valid in n-dimensional space.  This uses the idea that V o 
V is the square of the length of vector V .  With the help of the inner product 
o Henry's problem can be solved in n-dimensional space without restricting n to 
be two or three.


On 10/7/2010 9:35 AM, Roger Hui wrote:
> A typical mathematician would probably say,
> "does the line segment intersect the circle/sphere or its interior?"
>
> I too took "circle" to mean the "boundary of the circle",
> the points (x,y) which satisfy (*:R)=(x-Cx)+&*:(y-Cy) ;
> to include the interior, the equation changes to
> (*:R)>:(x-Cx)+&*:(y-Cy) . (C=(Cx,Cy) is the center.)
>
>
>
> ----- Original Message -----
> From: Henry Rich<[email protected]>
> Date: Thursday, October 7, 2010 4:58
> Subject: Re: [Jprogramming] Puzzle: line-circle/sphere intersection
> To: Programming forum<[email protected]>
>
>> 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.
> ----------------------------------------------------------------------
> 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