Recent changes Random page
GAMING
Technology
 
Gaming
Entertainment
Science Fiction
Biggest wikis
Hobbies
Music
See more...

LightInTheGavityField

Материал из JavaFX

Перейти к: навигация, поиск
 

Главная | Описание языка | API | Примеры | Инструменты Разработки | Новости | Ресурсы | Вопросы и ответы | Форум

[править] Движение света в гравитационном поле

[править] Анализ задачи с позиций классической теории Ньютона

Движение света в поле тяготения солнца можно рассматривать с класической точки зрения, учитывая что свет определнной волны состоит из фотонов определенной массы.


Массу фотона можно расчитать по следующим (не классическим ) формулам:

 math            math - длина волны, p -импульс фотона, h - постоянная планка
 math  E - энергия фотона, math - масса покоя фотона  
 math         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

}

[править] Анализ задачи с позиций Общей Теории Относительности

  • Выбрать способ движение волн/частиц в искривленном пространстве-времени
    • Движение по геодезическим линиям
    • Построение фронта волны как касательной к волновым диаграммам
Оцените: Share this article: