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這就是爲什麼我認爲它必須處理域/範圍。 –