- 注册时间
- 2013-10-14
- 最后登录
- 2013-12-16
- 阅读权限
- 20
- 积分
- 132
- 精华
- 0
- 帖子
- 44
|
/**
* 此类在 core.js 中进行扩展,扩展自 lufylegend-1.7.7 : LPoint 类
* @class LPoint
*/
/**
* [静态] 返回 pt1 和 pt2 之间的距离。* 扩展 lufylegend-1.7.7 : LPoint 类。 *
*
* @static
* @method distance
* @param {LPoint} pt1
* @param {LPoint} pt2
* @return {Number}
*/
LPoint.distance = function (pt1, pt2){
return LPoint.distance2(pt1.x, pt1.y, pt2.x, pt2.y);
};
/**
* [静态] 返回点 x1,y1 和点 x2,y2 之间的距离。* 扩展 lufylegend-1.7.7 : LPoint 类。 *
*
* @method distance2
* @param {Number} x1 第一点的 x 轴。
* @param {Number} y1 第一点的 y 轴。
* @param {Number} x2 第二点的 x 轴
* @param {Number} y2 第二点的 y 轴。
* @return {Number}
*/
LPoint.distance2 = function(x1, y1, x2, y2){
//最佳方法为。
var x = x1 - x2;
var y = y1 - y2;
return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
};
/**
* [静态] 确定两个指定点之间的点。* 扩展 lufylegend-1.7.7 : LPoint 类。 *
*
* @static
* @method interpolate
* @param {LPoint} pt1 第一个点。
* @param {LPoint} pt2 第二个点。
* @param {Number} f 两个点之间的内插级别。表示新点将位于 pt1 和 pt2 连成的直线上的什么位置。
* 如果 f=1,则返回 pt1;如果 f=0,则返回 pt2。
* @return {LPoint}
*/
LPoint.interpolate = function(pt1, pt2, f){
var _x = pt2.x - pt1.x;
var _y = pt2.y - pt1.y;
var tanVal = _y / _x;
var radians = Math.atan(tanVal);//获得角弧度。
var sinVal = Math.sin(radians);
var length = _y / sinVal;
length *= f;
var newY = length * sinVal;
var newX = newY / tanVal;
return new LPoint(newX, newY);
};
/**
* [静态] 将一对极坐标转换为笛卡尔点坐标。* 未实现 扩展 lufylegend-1.7.7 : LPoint 类。 *
* @static
* @method polar
* @param {Number} len 极坐标对的长度。
* @param {Number} angle 极坐标对的角度(以弧度表示)。
* @return {LPoint}
*/
LPoint.polar = function (len, angle){
return new LPoint(0,0);
};
/**
* 按指定量偏移 Point 对象。* 扩展 lufylegend-1.7.7 : LPoint 类。 *
* @method offset
* @param {Number} dx
* @param {Number} dy
* @return {void}
*/
LPoint.prototype.offset = function(dx, dy){
this.x += dx;
this.y += dy;
};
/**
* 将 Point 的成员设置为指定值。 * 扩展 lufylegend-1.7.7 : LPoint 类。 *
* @method setTo
* @param {Number} xa
* @param {Number} ya
* @return {void}
*/
LPoint.prototype.setTo = function(xa, ya){
this.x = xa;
this.y = ya;
};
/**
* 从 (0,0) 到此点的线段长度。
* @method getLength
* @return {Number}
*/
LPoint.prototype.getLength = function(){
return LPoint.distance(LPoint.EMPTY, this);
};
/**
* 创建此 LPoint 对象的副本。
* @method clone
* @return {LPoint}
*/
LPoint.prototype.clone = function(){
return new LPoint(this.x, this.y);
};
/**
* 将另一个点的坐标添加到此点的坐标以创建一个新点。* 扩展 lufylegend-1.7.7 : LPoint 类。 *
* @method add
* @param {LPoint} v
* @return {LPoint}
*/
LPoint.prototype.add = function(v){
return new LPoint(this.x + v.x, this.y + v.y);
};
/**
* 从此点的坐标中减去另一个点的坐标以创建一个新点。* 扩展 lufylegend-1.7.7 : LPoint 类。 *
* @method subtract
* @param {LPoint} v
* @return {LPoint}
*/
LPoint.prototype.subtract = function(v){
return new LPoint(this.x - v.x, this.y - v.y);
};
/**
* 确定两个点是否相同。* 扩展 lufylegend-1.7.7 LPoint 类。 *
* @method equals
* @param {LPoint} toCompare
* @return Boolean
*/
LPoint.prototype.equals = function(toCompare){
return (this.x == toCompare.x && this.y == toCompare.y);
};
/**
* 将源 LPoint 对象中的所有点数据复制到调用方 LPoint 对象中。* 扩展 lufylegend-1.7.7 : LPoint 类。 *
* @method copyFrom
* @param {LPoint} sourcePoint
* @return {void}
*/
LPoint.prototype.copyFrom = function(sourcePoint){
this.setTo(sourcePoint.x, sourcePoint.y);
};
/**
* 将 (0,0) 和当前点之间的线段缩放为设定的长度。* 扩展 lufylegend-1.7.7 : LPoint 类。 *
* @method normalize
* @param {Number} thickness 缩放值。例如,如果当前点为 (0,5) 并且您将它规范化为 1,则返回的点位于 (0,1) 处。
* @return {void}
*/
LPoint.prototype.normalize = function (thickness){
var pt1 = LPoint.EMPTY;
var _x = this.x - pt1.x;
var _y = this.y - pt1.y;
var tanVal = _y / _x;
var radians = Math.atan(tanVal);//获得角弧度。
var sinVal = Math.sin(radians);
this.y = thickness * sinVal;
this.x = this.y / tanVal;
};
/**
* 一个全局静态的点,值为 x = 0, y = 0。注意: 请不要更改此对象的属性。 * 扩展 lufylegend-1.7.7 : LPoint 类。 *
* @static
* @property EMPTY
* @type {LPoint}
*/
LPoint.EMPTY = new LPoint(0,0); |
|