Главная | Описание языка | FXD | API | Примеры | Инструменты Разработки | Новости | Ресурсы | Форум
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.text.*;
import javafx.scene.paint.*;
import javafx.scene.shape.*;
import java.lang.Math;
var v: Double = 3e8;
var w: Double = 700e12;
var lambda: Double = 450e-9;
var a: Double = -10 * lambda;
var b: Double = 10 * lambda;
var N = 300;
var x1: Double = -1.8;
var y1: Double = 1.7;
var x2: Double = 1.9;
var y2: Double = 1.3;
var dx: Double = (b - a) / N;
var l: Double = 2;
function getAngle(x: Double): Double {
var dx1 = x1 - x;
var dx2 = x2 - x;
var L = Math.sqrt(dx1 * dx1 + y1 * y1) + Math.sqrt(dx2 * dx2 + y2 * y2);
var angle = (L * w) / v;
return angle;
}
class Arrays extends CustomNode {
public override function create(): Node {
var elements: Line[];
var sx = 0.0;
var sy = 0.0;
for (x in [a..b step dx]) {
def angle = getAngle(x);
def ex = sx + l * Math.cos(angle);
def ey = sy + l * Math.sin(angle);
insert Line { startX: sx startY: sy endX: ex endY: ey stroke: Color.DARKRED } into elements;
sx = ex;
sy = ey;
}
Group {
content: [
elements,
Line { endX: sx endY: sy stroke: Color.ORANGE }
]
}
}
}
Stage {
title: "Mirror"
scene: Scene {
width: 800
height: 600
content: [
Text { x: 10 y: 50 font: Font { size: 16 } content: "Light velocity: {v}" }
Text { x: 10 y: 75 font: Font { size: 16 } content: "Light frequency: {w}" }
Text { x: 10 y: 100 font: Font { size: 16 } content: "Light wave length: {lambda}" }
Text { x: 10 y: 125 font: Font { size: 16 } content: "Mirror length: {b - a}" }
Text { x: 10 y: 150 font: Font { size: 16 } content: "N: {N}" }
Group {
scaleY: -1
translateX: 200
translateY: 300
var scale = 100;
content: [
Line { startX: scale * a endX: scale * b stroke: Color.BLUE strokeWidth: 2 }
for (x in [a..b step dx]) Group {
content: [
Line {
startX: scale * x1
startY: scale * y1
endX: scale * x
stroke: Color.DARKORANGE
strokeWidth: 0.5
}
Line {
startX: scale * x
endX: scale * x2
endY: scale * y2
stroke: Color.DARKORANGE
strokeWidth: 0.5
}
]
}
Circle {
centerX: scale * x1, centerY: scale * y1 radius: 3 fill: Color.BLUE
}
Circle {
centerX: scale * x2, centerY: scale * y2 radius: 3 fill: Color.GREEN
}
]
}
Arrays {
translateX: 800
translateY: 300
}
]
}
}