LightInTheGavityField
Материал из JavaFX
Главная | Описание языка | API | Примеры | Инструменты Разработки | Новости | Ресурсы | Вопросы и ответы | Форум
[править] Движение света в гравитационном поле
[править] Анализ задачи с позиций классической теории Ньютона
Движение света в поле тяготения солнца можно рассматривать с класической точки зрения, учитывая что свет определнной волны состоит из фотонов определенной массы.
Массу фотона можно расчитать по следующим (не классическим ) формулам:
![]()
- длина волны, p -импульс фотона, h - постоянная планка
E - энергия фотона,
- масса покоя фотона
m - масса фотона, с - скоросто света
Ссылки:
Нужно рассмотреть фотон соответствующий определенной длине волны ( для примера красный свет ) и посмотреть,
как он отклоняется в поле солнца согласно классическим законам тяготения теории Ньютона. В данном случае полученный результат должен отличаться от экспериментального где-то в 2 раза.
- В программе ниже надо:
- правильно определить ускорение частиц через параметры центральной массивной частицы
- Задать правильные параметры солнца и фотона ( массу, расстояние, ...)
- переставить JavaFX Script плагин в NetBeans (установка плагина)
import javafx.animation.*;
import javafx.application.*;
import javafx.scene.*;
import javafx.scene.paint.*;
import javafx.scene.geometry.*;
import javafx.scene.transform.*;
import java.lang.System;
public class Particle{
public attribute name:String ;
public attribute color:Color;
public attribute x:Number ;
public attribute y:Number ;
public attribute velocityX:Number ;
public attribute velocityY:Number ;
public attribute radius:Number ;
public attribute mass:Number;
}
public class ParticleSystem extends CustomNode{
public attribute centralParticle: Particle;
public attribute particles: Particle[];
public attribute dt:Number = 0.1 ;
public function run () {
//System.out.println("Run");
for (particle in particles){
var ax = 0; // Calculate acceleration acording to Newton Gravity Laws
var ay = 1; // Calculate acceleration acording to Newton Gravity Laws
particle.velocityX = ax *dt + particle.velocityX;
particle.velocityY = ay *dt + particle.velocityY;
particle.x = particle.velocityX *dt + particle.x;
particle.y = particle.velocityY *dt + particle.y;
}
}
function create():Node{
return Group{
content: [
Circle{
radius: bind centralParticle.radius
fill: centralParticle.color
},
for (particle in particles)
Circle{
radius: particle.radius
fill: particle.color
centerX: bind particle.x
centerY: bind particle.y
}
]
}
}
}
var particleSystem = ParticleSystem{
transform: Transform.translate(250, 200)
centralParticle: Particle{
name: "Sun"
radius: 50
mass: 1000 // Define Sun mass
color: Color.ORANGE
}
particles: [
Particle{
name: "Red Light"
radius: 5
color: Color.RED
mass: 10 // Define Red Photon mass
x: 0
y: -150
velocityX: 10
velocityY: 0
}
]
};
var timeline = Timeline {
keyFrames: KeyFrame { time: 0.05s, action: function() { particleSystem.run() } }
repeatCount: java.lang.Double.POSITIVE_INFINITY
}
timeline.start();
Frame{
title: "Light in the Gravity Field"
width: 500
height: 400
closeAction: function(){ System.exit(0); }
stage: Stage{
content: particleSystem
fill: Color.BLACK
}
visible: true
}
[править] Анализ задачи с позиций Общей Теории Относительности
- Выбрать способ движение волн/частиц в искривленном пространстве-времени
- Движение по геодезическим линиям
- Построение фронта волны как касательной к волновым диаграммам





