wood burning stoves 2.0*
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);
 
jQuery in Action, 2nd edition
 
subject: Drawing/moving problem: how to define destination? (code included)
 
Similar Threads
drawing arrows
drawRect() issues
Problem with java layout and panels and containers
Calculating the distance between two points problem
problem in drawing lines on a panel