Line
Line继承与Shape,而Shape继承与Node,对于Node的子类,都可以设置基本的监听器,鼠标事件和键盘事件,当然样式设置也是有的。
圆线图
同心自旋线图
所以线都围饶通一个中心点,并切伴有自旋,所以我给取了名称。
如果加上离心率那便是离心自旋线图
(想在百度上找几个有趣的数学函数图像,结果千篇一律的就哪几个,还不如自己制作。)
给出定义:
radian属于0-π
k=f(radian)
y-rsin(radian)=k(x-rcos(radian))
对应的一个离心自旋线图
代码
public class JacobLine extends Application{
public static void main(String[] args) {launch();}
public void start(Stage primaryStage) throws Exception {
Pane pane = createPane();
primaryStage.setScene(new Scene(pane));
primaryStage.setWidth(900);
primaryStage.setHeight(900);
primaryStage.setTitle("Line ");
primaryStage.show();
}
private Pane createPane() {
Pane pane=new Pane();
Line line = null;
for(int radi=0;radi<360;radi+=1) {
line=new Line();
line.setStartX(400f);
line.setStartY(0f);
line.setEndX(400.0f);
line.setEndY(800.0f);
line.setRotate(radi/Math.PI*180);
line.setLayoutX(100*Math.cos(radi));
line.setLayoutY(100*Math.sin(radi));
pane.getChildren().add(line);
}
for(int i=0;i<pane.getChildren().size();i+=1) {
if(i%2==0) {
((Line)(pane.getChildren().get(i))).setStroke(Color.color(i/360,0.5, 0.5));
}else {
((Line)(pane.getChildren().get(i))).setStroke(Color.color(1-i/360,0.5, 0.3));
}
}
pane.setLayoutY(30);
pane.setLayoutX(50);
return pane;
}
}
通过设置平移和旋转的角度可以的到许多有趣的图形
(默认顺时针旋转)
不旋转
// line.setRotate(radi/Math.PI*180);
line.setLayoutX(100*Math.cos(radi));
line.setLayoutY(100*Math.sin(radi));
得到一个柱体
设置透明度
line.setOpacity(0.5);
将颜色关掉,便于观察
我感觉在质数点出现奇异形状较高
line.setRotate(radi);
line.setRotate(180-radi);
line.setRotate(radi*0.01);
line.setRotate(radi*0.1);
line.setRotate(radi*0.2);
line.setRotate(radi*0.25);
line.setRotate(radi*0.3);
line.setRotate(radi*0.5);
line.setRotate(radi);
line.setRotate(2*radi);
line.setRotate(radi*3);
line.setRotate(radi*4);
line.setRotate(radi*7);
line.setRotate(radi*8);
line.setRotate(radi*9);
line.setRotate(radi*13);
line.setRotate(radi*15);
line.setRotate(radi*16);
line.setRotate(radi*17);
line.setRotate(radi*19);
line.setRotate(radi*31);
line.setRotate(radi*120);
line.setRotate(radi*133);
line.setRotate(radi*313);
(和上图一样,并不是截错了)
line.setRotate(radi*317);