一个点在矩形内做弓形运动:
主要运动类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. 带电粒子在磁场中的运动:带电...
5. 腿形和足弓检查:腿形的评估关注双腿的对称性和长度,而足弓检查则涉及足部的支撑结构,通过足弓印迹比例法可以区分弓形足、正常足弓、轻度至重度扁平足。 6. 体格测量:这是体格检查中的一个重要环节,包括身高...
21. 圆与三角形的关系:点P在圆内的运动可能涉及到三角形的性质变化,如三角形的面积、周长等。 以上就是基于题目内容的数学知识点解析,涵盖了圆的基本性质、点与圆的位置关系、圆周角定理、切线性质、弧长计算、...
利用运动思想,可以通过移动点的位置来优化问题的解决。例如,例题3中,通过在直角三角形Rt△ABC中移动点D,寻找矩形DECF面积的最大值或最小值,可能涉及到二次函数或极值的概念。 【取值范围】的求解,动点函数是...
制作两个圆,一个运动的圆,一个静止的圆,在静止的圆的外部和内部各画一个,让运动的圆的圆心分别向这两个点移动,达到两圆相切和相交的效果(当然两圆的内含、内切也可同样作出。只是要特别注意:选择顺序,先选...
其中,颈丛皮支的神经点是临床麻醉操作的关键点。深层神经涉及多个重要的运动和感觉神经,例如: 1. 舌下神经:作为运动性神经,它控制舌的运动,起源于延髓的舌下神经核,穿行于颈内动、静脉之间,最终支配舌内肌...
循环传播型需要多种脊椎动物宿主,如弓形虫;虫媒传播型则需通过吸血昆虫作为媒介,如疟原虫和利什曼原虫。 原虫的生理机能包括运动和生殖。运动机制多样化,如伪足运动、鞭毛运动、纤毛运动以及无运动细胞器原虫的...
3. **结束部分**:在活动结束后,教师应组织幼儿进行放松运动,帮助他们缓和肌肉紧张,预防运动后的不适。 **安全提示** 安全始终是活动的首要考虑,教师需确保热身充分,避免碰撞,合理规划活动路径,确保孩子们...