`
ice_key
  • 浏览: 17719 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论
阅读更多

一个点在矩形内做弓形运动:

主要运动类MotionTrace.java

package org.lyw.sh.test;

import java.text.DecimalFormat;

public class MotionTrace {

	private static int count = 0;

	private static boolean runFlag = true;

	private double startX;
	private double startY;

	private double minX;
	private double minY;

	private double maxX;
	private double maxY;

	private double increase = 0.0;

	private double distance;

	private double rate;

	private double directionX = 1.0;

	private double directionY = 1.0;

	public MotionTrace() {
		startX = 0;
		startY = 0;

		minX = 0;
		minY = 0;

		maxX = 500.0;
		maxY = 500.0;

		distance = 30;

		rate = 0.000009;
	}

	public void directionY() {
		System.err.println("--------------Y:" + directionY + "--------------");
		// --------------(+0.000000,0.000000+)--------------
		// --------------(+0.009000,0.009000+)--------------
		// System.out.println("--------------(+" + doubleFormat(minX * rate) +
		// ","
		// + doubleFormat(minY * rate) + "+)--------------");
		// System.out.println("--------------(+" + doubleFormat(maxX * rate) +
		// ","
		// + doubleFormat(maxY * rate) + "+)--------------");

		if (startX > maxX) {
			directionX = -directionX;
			startX = startX + distance * directionX;
			count = 1;
			runFlag = false;
			return;
			// directionX();
		} else if (startX < minX) {
			count = 1;
			directionX = -directionX;
			startX = startX + distance * directionX;
			// directionX();
			runFlag = false;
			return;
		}

		if (0 == count) {

			increase = startY;

		} else {

			increase = startY + distance * count * directionY;
		}

		if (!isBeyond(increase, minY, maxY)) {

			System.err.println("(" + doubleFormat(startX * rate) + ","
					+ doubleFormat(increase * rate) + ")");
		} else {
			count = -1;
			directionY = -directionY;
			startY = increase + distance * directionY;
			startX = startX + distance * directionX;
			//
			// if (startX > maxX) {
			// directionX = -directionX;
			// startX = startX + distance * directionX;
			// count = 0;
			// directionX();
			// } else if (startX < minX) {
			// count = 0;
			// directionX = -directionX;
			// startX = startX + distance * directionX;
			// directionX();
			// }

		}
		// } else if (increase > maxY) {
		// System.err.println("TOP");
		// count = 1;
		// directionY = -directionY;
		// startY = increase + distance * directionY;
		// startX = startX + distance * directionX;
		// } else if (increase < minY) {
		// System.err.println("BUTTON");
		// count = 1;
		// directionY = -directionY;
		// startY = increase + distance * directionY;
		// startX = startX + distance * directionX;
		// }
		count++;
	}

	public void directionX() {
		System.err.println("--------------X:" + directionX + "--------------");
		// --------------(+0.000000,0.000000+)--------------
		// --------------(+0.009000,0.009000+)--------------
		// System.out.println("--------------(+" + doubleFormat(minX * rate) +
		// ","
		// + doubleFormat(minY * rate) + "+)--------------");
		// System.out.println("--------------(+" + doubleFormat(maxX * rate) +
		// ","
		// + doubleFormat(maxY * rate) + "+)--------------");

		if (startY > maxY) {
			directionY = -directionY;
			startY = startY + distance * directionY;
			count = 1;
			runFlag = true;
			return;
			// directionY();
		} else if (startY < minY) {
			count = 1;
			directionY = -directionY;
			startY = startY + distance * directionY;
			runFlag = true;
			return;
			// directionY();
		}

		if (0 == count) {

			increase = startX;

		} else {

			increase = startX + distance * count * directionX;
		}

		if (!isBeyond(increase, minX, maxX)) {

			System.err.println("(" + doubleFormat(increase * rate) + ","
					+ doubleFormat(startY * rate) + ")");
		} else {
			// System.err.println("BEYOND");
			count = -1;
			directionX = -directionX;
			startX = increase + distance * directionX;
			startY = startY + distance * directionY;

			// if (startY > maxY) {
			// directionY = -directionY;
			// startY = startY + distance * directionY;
			// count = 0;
			// directionY();
			// } else if (startY < minY) {
			// count = 0;
			// directionY = -directionY;
			// startY = startY + distance * directionY;
			// directionY();
			// }
		}
		// } else if (increase > maxX) {
		// System.err.println("TOP");
		// count = 1;
		// directionX = -directionX;
		// startX = increase + distance * directionX;
		// startY = startY + distance * directionY;
		// } else if (increase < minX) {
		// System.err.println("BUTTON");
		// count = 1;
		// directionX = -directionX;
		// startX = increase + distance * directionX;
		// startY = startY + distance * directionY;
		// }
		count++;
	}

	private String doubleFormat(double dbl) {

		DecimalFormat dft = new DecimalFormat("#####0.000000");

		return dft.format(dbl);
	}

	private boolean isBeyond(double ori, double min, double max) {

		if (ori < min || ori > max) {
			return true;
		}
		return false;

	}

	public double getDirectionX() {
		return directionX;
	}

	public void setDirectionX(double directionX) {
		this.directionX = directionX;
	}

	public double getDirectionY() {
		return directionY;
	}

	public void setDirectionY(double directionY) {
		this.directionY = directionY;
	}

	public static boolean isRunFlag() {
		return runFlag;
	}

	public static void setRunFlag(boolean runFlag) {
		MotionTrace.runFlag = runFlag;
	}

}

 用java调度器调用类MotionMain.java

 

 

 

package org.lyw.sh.test;

import java.util.Timer;
import java.util.TimerTask;

public class MotionMain {

	public static void main(String[] args) {

		TimerTask task = new TimerTask() {

			MotionTrace motion = new MotionTrace();

			@Override
			public void run() {
				if (MotionTrace.isRunFlag()) {
					motion.directionY();
				} else {
					motion.directionX();
				}

			}
		};

		Timer timer = new Timer();

		timer.schedule(task, 0, 100);
	}
} 
分享到:
评论

相关推荐

    初中华师大版科学八年级上册1.4运动与力(力是改变物体运动状态的原因)练习.pdf

    11. 力的作用效果:力可以改变物体的形状(如弓形变)和物体的运动状态(如足球被踢出后的运动)。 12. 运动状态不变与受力:物体运动状态不变时,可能是受到平衡力的作用,也可能是不受力(如在真空中)。 13. ...

    《好题》初中物理八年级下册第八章《运动和力》检测(有答案解析)(6).pdf

    射箭时,弦的张力使弓形变,力使箭由静止变为运动。箭离开弦后因惯性继续前行。 14. 摩擦力的测定: 拉动木块做匀速直线运动时,木块受到的摩擦力等于拉力,方向与拉力相反。 15. 相互作用力和力的作用效果: 用脚向...

    多传感器数据融合在空间人类动态行为分析中的应用:与运动相关的功能障碍的评估和评估

    作者采用了一种系统分析方法,将肌肉骨骼系统描述为由一系列叠加的运动级-弓形段组成,其中每个下部段都倾向于将其运动传递给其他叠加段。 该分段链使得能够对空间中的动作进行意识感知和感官控制。 这种应用的系统...

    OA的运动与健康客服版.pptx

    随着病情发展,关节可能出现骨性膨大和畸形,如手指关节变形、膝关节弓形腿等。此外,关节压痛、肿胀、畸形和骨摩擦感是重要的体征,受影响的关节包括髋、膝、手、足和脊椎等。 对于诊断,影像学检查如X线和核磁...

    人体解剖学运动系统习题.doc

    - 肋弓:由第8至第10肋骨前端形成的弓形结构。 - 关节腔:关节两骨接触面之间的空隙,充满滑液,减少摩擦。 - 椎间盘:位于相邻椎体之间的弹性缓冲结构,由髓核和纤维环组成。 - 黄韧带:连接相邻椎弓板的坚韧...

    课程设计 减速器课程设计 减速器课程设计 减速器

    锯床的效率受到锯弓运动轨迹的影响,直线运动效率较低,而弧线运动能提高效率,因此现代弓形锯床通常采用弧线运动方式。 设计任务书中明确了几个关键点: 1. 工作原理和工艺动作过程:锯弓在电机驱动下往复运动,...

    初一七年级动点问题专题讲解10个题目.doc

    2. **动点与圆的联系**:点在圆上或圆外移动时,可能需要考虑点与圆心的距离、弦长、弓形面积等。例如,点P在半径为r的圆上运动,点Q是直径上的定点,求线段PQ的最短距离。 3. **动点与角的关系**:动点在图形中...

    体育知识之选择题篇一.doc

    - **答案:背部(选项C)**:背越式跳高时,运动员身体呈弓形越过横杆,首先接触海绵垫的是背部。 #### 36. 背越式跳高身体在杆上的姿势? **知识点解析:** - **答案:背弓(选项C)**:这种姿势有助于最大限度地...

    弓箭类型分类分享.pdf

    弓箭作为一种古老的武器和运动器材,其类型多样,设计精妙。主要分为两类:大反曲+小梢反翘弓形和长梢弓形。这两种弓形各具特点,适应不同的使用需求和技术。 大反曲+小梢反翘弓形是弓箭设计中的一个重要类别,以...

    2020年中考数学必考考点专题26与弧长扇形面积有关的问题含解析202004061168

    首先确定点E在以D为圆心DA为半径的圆上运动,点C在以M、N为端点的劣弧上运动,利用角度关系和弧长公式求解。 2. 例题2是一个直角三角形中的阴影部分面积问题,需要计算圆周角对应的扇形面积减去小半圆和直角三角形的...

    准备活动--徒手操.docx

    双臂伸直向上,向后弯曲形成弓形,然后前倾触摸脚尖,注意保持双腿伸直。 弓步压腿则专注于下肢的柔韧性。前后脚放置正确,身体正面向前,一手放在前大腿上,有节奏地按压,左右交替进行,增强大腿和臀部的灵活性。...

    湖北省沙市中学2020学年高二物理上学期第五次双周考试题.doc

    题目中的弓形线圈和通电直导线构成的问题,涉及电磁力的分析,线圈的a、b端的运动方向取决于电流产生的磁场方向。正确答案是 B,线圈会远离导线,a 端向纸内,b 端向纸外转动。 3. 带电粒子在磁场中的运动:带电...

    体育保健学第九章体格检查.ppt

    5. 腿形和足弓检查:腿形的评估关注双腿的对称性和长度,而足弓检查则涉及足部的支撑结构,通过足弓印迹比例法可以区分弓形足、正常足弓、轻度至重度扁平足。 6. 体格测量:这是体格检查中的一个重要环节,包括身高...

    2019秋九年级数学下册第三章圆单元综合检测题新版北师大版20191205152

    21. 圆与三角形的关系:点P在圆内的运动可能涉及到三角形的性质变化,如三角形的面积、周长等。 以上就是基于题目内容的数学知识点解析,涵盖了圆的基本性质、点与圆的位置关系、圆周角定理、切线性质、弧长计算、...

    初中数学思维拓展--动态数学.ppt

    利用运动思想,可以通过移动点的位置来优化问题的解决。例如,例题3中,通过在直角三角形Rt△ABC中移动点D,寻找矩形DECF面积的最大值或最小值,可能涉及到二次函数或极值的概念。 【取值范围】的求解,动点函数是...

    GSP5.exe

    制作两个圆,一个运动的圆,一个静止的圆,在静止的圆的外部和内部各画一个,让运动的圆的圆心分别向这两个点移动,达到两圆相切和相交的效果(当然两圆的内含、内切也可同样作出。只是要特别注意:选择顺序,先选...

    颈部血管神经的一般概况.doc

    其中,颈丛皮支的神经点是临床麻醉操作的关键点。深层神经涉及多个重要的运动和感觉神经,例如: 1. 舌下神经:作为运动性神经,它控制舌的运动,起源于延髓的舌下神经核,穿行于颈内动、静脉之间,最终支配舌内肌...

    人体寄生虫学医学原虫概论件.ppt

    循环传播型需要多种脊椎动物宿主,如弓形虫;虫媒传播型则需通过吸血昆虫作为媒介,如疟原虫和利什曼原虫。 原虫的生理机能包括运动和生殖。运动机制多样化,如伪足运动、鞭毛运动、纤毛运动以及无运动细胞器原虫的...

    大班主题小足球手教案反思.docx

    3. **结束部分**:在活动结束后,教师应组织幼儿进行放松运动,帮助他们缓和肌肉紧张,预防运动后的不适。 **安全提示** 安全始终是活动的首要考虑,教师需确保热身充分,避免碰撞,合理规划活动路径,确保孩子们...

Global site tag (gtag.js) - Google Analytics