GIS 算法,计算箭头
来源:互联网 发布:淘宝众筹logo 编辑:程序博客网 时间:2024/06/05 05:38
根据两个点,计算箭头。
var y2 = points[length - 1].y;
var x1 = points[length - 2].x;
var y1 = points[length - 2].y;
var distance = Math.sqrt(Math.pow((x2 - x1),2) + Math.pow((y2 - y1),2));
var yb = y2 - s * (x2 - x1) / (Math.SQRT2 * distance) + s * (y1 - y2) / (Math.SQRT2 * distance);
var xb = x2 - s * (x2 - x1) / (Math.SQRT2 * distance) - s * (y1 - y2) / (Math.SQRT2 * distance);
var ya = y2 + s * (x2 - x1) / (Math.SQRT2 * distance) + s * (y1 - y2) / (Math.SQRT2 * distance);
var xa = x2 - s * (x2 - x1) / (Math.SQRT2 * distance) + s * (y1 - y2) / (Math.SQRT2 * distance);
feature.geometry.components.push(new OpenLayers.Geometry.Point(xa, ya));
feature.geometry.components.push(new OpenLayers.Geometry.Point(x2, y2));
feature.geometry.components.push(new OpenLayers.Geometry.Point(xb, yb));
/*
var x1 = points[length - 1].x;
var y1 = points[length - 1].y;
var x2 = points[length - 2].x;
var y2 = points[length - 2].y;
if (x2 != x1) {
var k = (y2 - y1) / (x2 - x1);
if (k > 0) {
if (x2 > x1) {//1象限
var angle = Math.PI / 2 - Math.atan(k);
var angleL = angle - Math.PI / 4;
if (angleL < 0) {
angleL += 2 * Math.PI;
}
var angleR = angle + Math.PI / 4;
}
else {//3
var angle = 1.5 * Math.PI - Math.atan(k);
var angleL = angle - Math.PI / 4;
var angleR = angle + Math.PI / 4;
}
} else {
if (y2 > y1) {//4
var angle = 1.5 * Math.PI + Math.atan(-k);
var angleL = angle - Math.PI / 4;
var angleR = angle + Math.PI / 4;
if (angleR > 2 * Math.PI) {
angleR -= 2 * Math.PI;
}
}
else {//2
var angle = 0.5 * Math.PI + Math.atan(-k);
var angleL = angle - Math.PI / 4;
var angleR = angle + Math.PI / 4;
}
}
} else {
var angle = 0;
var angleL = angle - Math.PI / 4;
var angleR = angle + Math.PI / 4;
}
var xn1 = x1 + s * Math.sin(angleL);
var yn1 = y1 + s * Math.cos(angleL);
var xn2 = x1 + s * Math.sin(angleR);
var yn2 = y1 + s * Math.cos(angleR);
feature.geometry.components.push(new OpenLayers.Geometry.Point(xn1, yn1));
feature.geometry.components.push(new OpenLayers.Geometry.Point(x1, y1));
feature.geometry.components.push(new OpenLayers.Geometry.Point(xn2, yn2));*/
- GIS 算法,计算箭头
- GIS中的计算几何
- GIS面积距离计算
- GIS算法源码集合
- GIS算法资料
- GIS基本算法基础
- gis矢量切片算法
- GIS源码下载与GIS经典算法
- GIS源码下载与GIS经典算法
- GIS中的计算几何(一)
- GIS中的计算几何(二)
- GIS的云计算解决方案
- GIS空间分析算法 内容简介
- GIS的几个算法理论
- GIS算法的一点理解
- GIS常用的几何算法
- GIS算法-底层开发使用
- GIS常用的几何算法
- DOM4J创建XML文档
- test
- 【状态压缩DP】POJ 1185
- Linux清空内存和磁盘缓存
- 敏捷软件开发 Agile software Development
- GIS 算法,计算箭头
- 初学linux一些笔记
- Redy词法识别--状态机的合并算法
- drools的简单demo-廉价房申请单
- 设计模式六大原则(2):里氏替换原则
- C语言main函数
- 如何有效率地使用时间
- jdbc事物处理
- C++ 虚函数 派生类的调用