aspose file tools*
The moose likes Swing / AWT / SWT and the fly likes Drawing/moving problem: how to define destination? (code included) Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Swing / AWT / SWT
Bookmark "Drawing/moving problem: how to define destination? (code included)" Watch "Drawing/moving problem: how to define destination? (code included)" New topic
Author

Drawing/moving problem: how to define destination? (code included)

Maria Sachhause
Greenhorn

Joined: Nov 30, 2005
Posts: 10
Hi,
(sorry if my english is not understandable enough)

I have created a program where user can define start point and destination point with a mouse. After doing this line is drawn between these points(coordinates using drawLine).

Then I have this Run button and when it is pressed letter X starts to move to a direction which is "hard coded" to method (updateXPosition). This letter X moves once in a second(I am using thread and timer but timer is for other purposes). Starting point of letter X is start point(point what user has pressed first).

So I know:
+ coordinates of the start and destination
+ when to move letter X (thread/timer, it has to move once in a second)
+ coordinates where to start to move letter X
+ my current location (X current location)

My problem is:
How do I get that letter X to moves towards destination point once in a second???
What is a simpliest way to do it with my code??


Below is code of the program:
it is quite long but I really need help with this one.. Tried for days to solve this problem.


"Main"



Class for Global variables
[code]


/* This class exist because it is easiest way to use "global" variables
*
*/
public class Global
{
// Must have some value at beginning otherwise main does not work as it should be
public static int gX1 = 5;
public static int gY1 = 5;
public static int gX2 = 5;
public static int gY2 = 5;
public static int secondFromBeginning = 0;

public static int sailLocationX = 10;
public static int sailLocationY = 10;

public static double distance = 0;

public static int counter=1;


public static int xx = 0;
public static int yy = 0;


}
[code]
Craig Wood
Ranch Hand

Joined: Jan 14, 2004
Posts: 1535
Tried to make minimal changes to answer your question, including:
Changed all class names to avoid name-clashing so you can run as-is.
Eliminated the updateXPosition and startTimer methods.
Made the Timer a member variable (class scope) and implemented ActionListener for
Main2 for the timer to use. Animation code is inside the actionPerformed method.
Changed DrawingPanel to a JPanel and eliminated its update method.
Maria Sachhause
Greenhorn

Joined: Nov 30, 2005
Posts: 10
Thank you, Craig Wood. You helped me a lot

Now I am trying to add one more point. Now if I press mouse twise I get two points(start and destination), but when I try to add third it does not work.

Below is how I try to do it, I don't get it why it doesn't work?


[ October 30, 2007: Message edited by: Maria Sachhause ]
Craig Wood
Ranch Hand

Joined: Jan 14, 2004
Posts: 1535
Maria Sachhause
Greenhorn

Joined: Nov 30, 2005
Posts: 10
Thanks again You are really helping me

What if I want that third mouse pressing draws a line from given coordinate to the center?
So, I mean that if I want that first and second mouse press draws a line between those points like now it does but the third press draws a line from its coordinates toward center.

Should I do like this, where windSetLine x and y are global variables which tells where center is (250 and 250).
g.drawLine(x3, y3, Global2.windSetLineX,Global2.windSetLineY );
Craig Wood
Ranch Hand

Joined: Jan 14, 2004
Posts: 1535
Should I do like this, where windSetLine x and y are global variables which tells where
center is (250 and 250).

Sounds like it would do what you want.
Maria Sachhause
Greenhorn

Joined: Nov 30, 2005
Posts: 10
Hi, few days have passed and new and last problem has risen.

Now I can make this.

step-by-step

1. First mouse press defines start point
2. Second mouse press defines destination point
3. Line is drawn between start and destination points
4. Third mouse press draws a line towards center

I have this coordinates: north is 0 and clockwise 360 degrees

-----------------360/0-------------------
-------------------*---------------------
270************************************90
-------------------*---------------------
-----------------180---------------------


And my problem is this:

-How can I draw a line from the start point towards degree 140 (which is hardcoded to for example to variable int heading=140)???
Craig Wood
Ranch Hand

Joined: Jan 14, 2004
Posts: 1535
// start at x1, y1
// destination at x2, y2
// third mouse click at x3, y3
// distance from start to third mouseClick
double distance = Point2D.distance(x1, y1, x3, y3);
// or use any arbitrary distance
// angle theta = 140 degrees expressed in radians
double theta = Math.toRadians(140);
// Angles in java are measured positive clockwise from
// zero at 3 o'clock. To start at 12 o'clock you can
// adjust theta by 90 degrees == Math.PI/2 as needed.
theta -= Math.PI/2;
double x = x1 + distance*Math.cos(theta);
double y = y1 + distance*Math.sin(theta);
// draw line from start to (x, y)
// it will have length = "distance" and a
// direction of 140 degrees from start to (x, y)
g.drawLine(x1, y1, x, y);
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Drawing/moving problem: how to define destination? (code included)