Re: help with trig(?) calculation
- To: mathgroup at smc.vnet.net
- Subject: [mg13234] Re: [mg13155] help with trig(?) calculation
- From: Robert Pratt <rpratt at math.unc.edu>
- Date: Fri, 17 Jul 1998 03:17:34 -0400
- Sender: owner-wri-mathgroup at wolfram.com
Unless your screen is square (which I doubt), the example (320,240) with 45 degrees hits the point (560,0), not (640,0). Use the angle ArcTan[240/320]=ArcTan[3/4] if you want to hit (640,0). The following commands seem to do what you want, if you enter alpha in radians (convert if necessary). WithinBoundaryQ[{x_,y_}]:=(0<=x<=640) && (0<=y<=480) intersect[{x_,y_},alpha_]:=Module[{u,v,t,sol}, {u,v}={x-320,240-y}+t{Cos[alpha],Sin[alpha]}; sol=Select[Union[Solve[Abs[u]==320,t],Solve[Abs[v]==240,t]], Positive[t/.#]&]; Select[Transpose[{(u/.sol)+320,240-(v/.sol)}],WithinBoundaryQ[#]&]] intersect[{320,240},45 Pi/180] {{560,0}} intersect[{320,240},ArcTan[240/320]] {{640,0}} intersect[{320,0},3 Pi/2] {{320,480}} intersect[{0,240},0] {{640,240}} Rob Pratt Department of Mathematics The University of North Carolina at Chapel Hill CB# 3250, 331 Phillips Hall Chapel Hill, NC 27599-3250 rpratt at math.unc.edu http://www.math.unc.edu/Grads/rpratt/ On Mon, 13 Jul 1998, Leon Bryant wrote: > i need some help from the "gurus". i am a multimedia programmer working > in San Antonio, and need help with a programming idea that involves > some simple(?) trig. > > the problem: > > i have a display area (computer screen) that has the dimensions 640 by > 480 units (pixels). > my program sets the dimensions of this rectangle to: > > TL - 0,0 > TR - 640,0 > BL - 0,480 > BR - 640,480 > > what i would like to do is give the coordinates of a point on the > screen, an angle (or a second point), and devise an algorithm that will > plot where the imaginary line would inintersect the boundaries of the > display area. > for instance: > > point: (320,240) (centered on screen) angle: 45 degrees > intersection point: (640,0) > > this one's intuitive since the starting point is centered on the screen, > and the angle is 25% of 360 degrees, but i'm stumped with anything more > irregular. > > can you explain how i'd do this? can it be put into a simple formual? > > email: leon.bryant at usaa.com