I have these conditions:
- Point A, B and C are created.
- Point A to Point B will create a line.
- Parallel lines are created depending on the position of Point A, B and C (refer to the figure below).
- If you move Point A, the lines will also move but Points B and C remain on their respective positions.
- They can be moved at any position.
What I want is to create this:
For drawing straight lines, use the lineTo() method. Draws a line from the current drawing position to the position specified by x and y . This method takes two arguments, x and y , which are the coordinates of the line's end point.
To construct parallel lines, remember that if corresponding angles are congruent then lines are parallel. This means that if you can copy an angle to create congruent corresponding angles, you can create parallel lines.
To draw a line on a canvas, you use the following steps: First, create a new line by calling the beginPath() method. Second, move the drawing cursor to the point (x,y) without drawing a line by calling the moveTo(x, y) . Finally, draw a line from the previous point to the point (x,y) by calling the lineTo(x,y) method.
In the new RCE, to insert a horizontal rule, you do the following: Press Alt+F9 to bring up the editor menu. Select Insert. Choose Horizontal line.
Consider the figure 1 below (I'm sure you already know this basic 2D geometry but without this my answer would be incomplete):
Coordinates for points A and B are known and we want to find function that can be used to calculate y-coordinate whenever x-coordinate is known, in such a way that point (x,y) lies on the line. From the figure 1:
k = tan(alpha) = (y2 - y1) / (x2 - x1) - the slope of line
Putting coordinates of either A or B into well known line equation y = kx + m
we can calculate m
to make the equation complete. Having this equation, for any coordinate x we can calculate coordinate y using this equation. The good thing about it is that it doesn't depend on the position of point A and B or slop (angle) of the line - you will have to take care of the special case of vertical/horizontal lines where y/x will be infinite according to this equation.
Back to your question. Take a look at figure 2 below:
We have very similar situation here, there is a line between points A and C, and line between points B and D. I assumed that point A is at the center of the coordinate system! This generally won't be the case but this is really not a restriction as you can perform translation that will put A in the center, then make your calculations and then translate everything back.
Using the technique described at the beginning, you can find the line equation for the line that connects A and C points and for the line that connects B and D points (D coordinates can be easily calculated). Let's assume you did just that:
A-C: y = k1*x (m is zero as line goes through the center A)
B-D: y = k2*x + m2 (m2 is not zero as line doesn't go through the center A)
Finally the algorithm you could use to draw these parallel lines:
s = (x3 - x1) / 4
and so on.x_start = x1 + s (and later x_start += s)
, and calculate y-coordinate using the equation for A-C line y_end = k1*x_start
. This will give you point that lies on the line A-C and this is the start of your line.x_end = x2 + s (later x_end += s)
y_end = k2*x_end + m2
|x3 - x1| / desired_num_of_lines
of them).You'll have to form new equations each time point A moves out of the current A-C line, as every time this happens the slop of the A-C (and B-D) line changes invalidating the current equations.
I'm not going to write any JS code, but having the logic behind the possible solution should give you more then enough information to move forward with you own implementation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With