太阳系行星运行图-java多媒体实验

该博客介绍如何使用Java编程实现多线程模拟太阳系行星运动,每个行星作为一个独立线程,根据实际速度d倍行进。通过调整比例使得画面直观美观,采用极坐标(x=r*cosθ, y=r*sinθ)和角速度更新行星位置,涵盖八大行星的匀速圆周运动,整个系统由9个并发执行的线程构成,包括太阳和各个行星线程以及一个用于绘制场景的线程。" 104151333,9299380,小程序开发实践:缓存管理与交互反馈,"['小程序开发', '交互设计', '缓存管理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写多线程程序,太阳和其他每个行星分别对应一个线程。给定一个数d,要求每个行星都以其实际速度d倍的速度行进。假设太阳是不动的。所以其他行星的速度应当取相对于太阳的速度。每个行星于太阳的距离应当取实际距离的一个比例值。具体的比例值取值只要能使太阳系行星运行图比较直观或者美观就可以。

假设中心(0,0),x=r*cosθ,y=r*sinθ,用角速度计算更新位置。

下面用匀速圆周运动模拟行星运行。八大行星:水星,金星,地球,火星,木星,土星,天王星,海王星。

每个行星对应一个线程,计算行星当前角度;太阳系绘制线程一个,负责场景绘制。共9个线程并发执行。

 


import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;


//行星动画主窗口
public class PlanetAnimation extends JFrame{

	Data sharedData = new Data(); //构造数据对象,里面有行星数据,该对象传递给各个线程
	ExclusiveData planetAngle=new ExclusiveData();//各个星球当前的角度
	DrawPanel drawPanel;//绘制面板
	starThread planetThread[]=new starThread[8];//每个行星一个线程,负责位置更新工作
	DrawThread drawThread;//负责太阳系全部绘制工作的线程
	int i,j;
	public PlanetAnimation() {
		super("太阳系行星运行图");
		//下面布局界面
		//构造绘制面板
		drawPanel=new DrawPanel(sharedData,planetAngle);
		Container c = getContentPane();
		c.add(drawPanel,BorderLayout.CENTER);//画布放在中间
		//加载宇宙背景
		share
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值