也是出于兴趣,按照斑竹思想,写了点脚本测试了一下,对象的角度a如果是(0-360),激活后对象的x,y坐标会乱跑。后来又理解分析了一下cos()和sin()函数,终于明白斑竹的思想是正确的,(0-360)应该化成(0-2π=0-6.283)的弧度值,后来再测试了一下,呵呵,结果对了。也许楼主可以参考一下:
1、组态图

2、x坐标的脚本
#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
static int x=500; //对象的x坐标的静态值
static float a=0; //对象的弧度静态值
int r=100 ; //对象的旋转半径,可以用变量来赋值
if (a<628300) { a+=12566; } //inc 2% , 一个圆周等于2π=6.283,扩大10万倍换成整数进行比较
if (a>=628300) { a=0; } //back ,当弧度数等于2π时,赋初始值
SetTagFloat("a",a/100000); //把当前的弧度数赋给内部变量a,给Y坐标使用
x=500+r*cos(a/100000); //计算对象x坐标值,
SetTagDWord("X",x); //把对象当前x坐标的值赋给内部变量X,在画面上显示
return x; //返回对象当期的x坐标
}
3、y坐标的脚本
#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
static int y=200; //对象的x坐标的静态值
float a; //中间变量
int r=100; //对象的旋转半径,可以用变量来赋值
a=GetTagFloat("a"); //读取把当前的弧度数赋给变量中间a
y=200+r*sin(a); //计算对象x坐标值,
SetTagDWord("Y",y); //把对象当前x坐标的值赋给内部变量X,在画面上显示
return y; //返回对象当期的x坐标
}
圆周运动动画视频录像
点击此处查看附件