0
我想在JavaFX中绘制箭头。我做了所有的数学,甚至占了弧度的东西。出于某种原因,我的箭头没有被正确绘制。我几乎认为它与trig函数的域/范围有关,但我无法确定。绘制箭头不起作用
这里是我的代码:
package com.neonorb.test;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Line;
import javafx.stage.Stage;
public class ArrowTest extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
double startx = 200;
double starty = 100;
double endx = 100;
double endy = 300;
double arrowAngle = Math.toRadians(45.0);
double arrowLength = 10.0;
double lineAngle = Math.atan((startx - endx)/(starty - endy));
double x1 = Math.asin((arrowAngle + lineAngle)/arrowLength) + endx;
double y1 = Math.acos((arrowAngle + lineAngle)/arrowLength) + endy;
double x2 = Math.asin((arrowAngle - lineAngle)/arrowLength) + endx;
double y2 = Math.acos((arrowAngle - lineAngle)/arrowLength) + endy;
Group root = new Group();
Line line = new Line(startx, starty, endx, endy);
Line arrowHead1 = new Line(endx, endy, x1, y1);
Line arrowHead2 = new Line(endx, endy, x2, y2);
root.getChildren().addAll(line, arrowHead1, arrowHead2);
primaryStage.setScene(new Scene(root, 800, 600));
primaryStage.show();
}
}
当你计算X1添加arcsinus(从约-1.57至1.57),以endx等于100同样的事情Y1的结果, x2和y2。这就是为什么你会在你的产品线末端产生一个小黑点。 – StephaneM
@StephaneM这就是为什么我认为它必须处理域/范围。 –