一个点在矩形内做弓形运动:
主要运动类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);
}
}
分享到:
相关推荐
11. 力的作用效果:力可以改变物体的形状(如弓形变)和物体的运动状态(如足球被踢出后的运动)。 12. 运动状态不变与受力:物体运动状态不变时,可能是受到平衡力的作用,也可能是不受力(如在真空中)。 13. ...
射箭时,弦的张力使弓形变,力使箭由静止变为运动。箭离开弦后因惯性继续前行。 14. 摩擦力的测定: 拉动木块做匀速直线运动时,木块受到的摩擦力等于拉力,方向与拉力相反。 15. 相互作用力和力的作用效果: 用脚向...
作者采用了一种系统分析方法,将肌肉骨骼系统描述为由一系列叠加的运动级-弓形段组成,其中每个下部段都倾向于将其运动传递给其他叠加段。 该分段链使得能够对空间中的动作进行意识感知和感官控制。 这种应用的系统...
随着病情发展,关节可能出现骨性膨大和畸形,如手指关节变形、膝关节弓形腿等。此外,关节压痛、肿胀、畸形和骨摩擦感是重要的体征,受影响的关节包括髋、膝、手、足和脊椎等。 对于诊断,影像学检查如X线和核磁...
- 肋弓:由第8至第10肋骨前端形成的弓形结构。 - 关节腔:关节两骨接触面之间的空隙,充满滑液,减少摩擦。 - 椎间盘:位于相邻椎体之间的弹性缓冲结构,由髓核和纤维环组成。 - 黄韧带:连接相邻椎弓板的坚韧...
锯床的效率受到锯弓运动轨迹的影响,直线运动效率较低,而弧线运动能提高效率,因此现代弓形锯床通常采用弧线运动方式。 设计任务书中明确了几个关键点: 1. 工作原理和工艺动作过程:锯弓在电机驱动下往复运动,...
2. **动点与圆的联系**:点在圆上或圆外移动时,可能需要考虑点与圆心的距离、弦长、弓形面积等。例如,点P在半径为r的圆上运动,点Q是直径上的定点,求线段PQ的最短距离。 3. **动点与角的关系**:动点在图形中...
- **答案:背部(选项C)**:背越式跳高时,运动员身体呈弓形越过横杆,首先接触海绵垫的是背部。 #### 36. 背越式跳高身体在杆上的姿势? **知识点解析:** - **答案:背弓(选项C)**:这种姿势有助于最大限度地...
首先确定点E在以D为圆心DA为半径的圆上运动,点C在以M、N为端点的劣弧上运动,利用角度关系和弧长公式求解。 2. 例题2是一个直角三角形中的阴影部分面积问题,需要计算圆周角对应的扇形面积减去小半圆和直角三角形的...
根据足弓印迹的比例法,可以区分出不同类型的足部异常,如弓形足、正常足弓、以及轻度至重度的扁平足等。足部健康对于维持正常的运动功能和预防运动损伤有直接影响。 体格测量作为体格检查的重要环节,包括了身高、...
双臂伸直向上,向后弯曲形成弓形,然后前倾触摸脚尖,注意保持双腿伸直。 弓步压腿则专注于下肢的柔韧性。前后脚放置正确,身体正面向前,一手放在前大腿上,有节奏地按压,左右交替进行,增强大腿和臀部的灵活性。...
题目中的弓形线圈和通电直导线构成的问题,涉及电磁力的分析,线圈的a、b端的运动方向取决于电流产生的磁场方向。正确答案是 B,线圈会远离导线,a 端向纸内,b 端向纸外转动。 3. 带电粒子在磁场中的运动:带电...
弓箭是一种自古以来便在战争、狩猎和运动中广泛使用的工具。作为一种古老的武器和运动器材,它不仅仅是一件简单的工具,更是人类智慧的结晶,其多样化的类型和精妙的设计反映了不同文明的智慧和对力学原理的应用。...
21. 圆与三角形的关系:点P在圆内的运动可能涉及到三角形的性质变化,如三角形的面积、周长等。 以上就是基于题目内容的数学知识点解析,涵盖了圆的基本性质、点与圆的位置关系、圆周角定理、切线性质、弧长计算、...
制作两个圆,一个运动的圆,一个静止的圆,在静止的圆的外部和内部各画一个,让运动的圆的圆心分别向这两个点移动,达到两圆相切和相交的效果(当然两圆的内含、内切也可同样作出。只是要特别注意:选择顺序,先选...
这类问题可能需要利用到二次函数的极值知识,通过运动点的位置改变,学生能够直观地理解函数极值的几何意义。 在探讨取值范围问题时,动态数学的动点函数则显得尤为重要。在等腰梯形内,动点P的移动可以构建起一个...
3. **结束部分**:在活动结束后,教师应组织幼儿进行放松运动,帮助他们缓和肌肉紧张,预防运动后的不适。 **安全提示** 安全始终是活动的首要考虑,教师需确保热身充分,避免碰撞,合理规划活动路径,确保孩子们...
- **例6**:通过点A的匀速圆周运动求解角的大小。 - **例7**:最大化扇形面积的条件和计算。 - **练习题**:涉及终边相同角的识别、象限角的性质、弧度与角度的转换、扇形的计算等。 这些例题和练习题旨在帮助我们...
1. 在一个圆中,如果连杆PA与点A运动形成的圆交于B点,根据垂径定理,可以求解P到圆心O的距离。 2. 如果CD是直径,且EA=EB,可以得出结论:EA和EB是等弧,因此,CE=EB,同时,根据垂径定理,CD垂直于AE,所以CD平分...