- 浏览: 577287 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
wzh051527:
我是大四实习生一个,自我感觉技术能力在第三年。。唯一不明白,为 ...
十年技术,不要再迷茫 -
room_bb:
.hrl文件怎么加入到编译规则里面?比如:pp.hrl文件-d ...
Erlang中用的makefile的一点解释 -
吉米家:
感觉帆软报表的flash打印就很不错哇,特别好用
JSP 实现报表打印 -
雪碧爱芬达:
苦逼程序员的辛酸反省与总结 -
mlyjxx:
...
十年技术,不要再迷茫
开源下自己写的一个45度坐标系数据转换工具类
/**
*45度坐标系数据转换工具类
* code wxsr
*/
package com.engine.data.referenceFrame45
{
import flash.geom.Point;
public class Rectangle45 //implements IRectangle45
{
public static var ARI_MODE:Boolean=false
public static const anglex:Number=Math.asin(1/Math.sqrt(5))*(180/Math.PI)
private static const angley:Number=Math.asin(2/Math.sqrt(5))*(180/Math.PI)
public static const sideFirst:Point=new Point(1,1)
public static const sideSecond:Point=new Point(-1,1)
public static const sideThird:Point=new Point(-1,-1)
public static const sideFour:Point=new Point(1,-1)
/**
*角度转弧度
* @param angle
* @return
*
*/
public static function angleToradian(angle:Number):Number
{
return angle*180/Math.PI*angle;
}
/**
* 弧度转角度
* @param radian
* @return
*
*/
public static function radianToangle(radian:Number):Number
{
return radian*Math.PI/180*radian
}
/**
*获取x单位45度移动增量
* @param targetPoint 目标坐标
* @param leftVertex 新开始点
* @param origin 原点
* @return
*
*/
public static function vx(targetPoint:Point, cell:CellGird45):Number
{
var pox:Number=(targetPoint.x+cell.leftVertex.x)/2 - (targetPoint.y-cell.leftVertex.y)-cell.origin.x;
return pox;
}
/**
* 获取y单位45度移动增量
* @param targetPoint
* @param leftVertex
* @param origin
* @return
*
*/
public static function vy(targetPoint:Point, cell:CellGird45):Number
{
var poy:Number=(targetPoint.x+cell.leftVertex.x)/2 + (targetPoint.y-cell.leftVertex.y)-cell.origin.x;
return poy;
}
/**
*获取直角坐标某点的x45度坐标
* @param targetPoint
* @param newLeftVertex
* @return
*
*/
public static function x45(targetPoint:Point, cell:CellGird45):Point
{
var poX:Number=vx(targetPoint,cell)
return new Point(cell.leftVertex.x+poX,cell.leftVertex.y-poX*.5)
}
/**
* 获取直角坐标某点的y45度坐标
* @param targetPoint
* @param newLeftVertex
* @return
*
*/
public static function y45(targetPoint:Point, cell:CellGird45):Point
{
var poY:Number=vy(targetPoint,cell)
return new Point(cell.leftVertex.x+poY,cell.leftVertex.y+poY*.5)
}
/**
*将直角坐标系的一点转换为45度坐标系 对应点
* @param targetPoint
* @param newLeftVertex
* @return
*
*/
public static function xy45(targetPoint:Point, cell:CellGird45):Point
{
var poX:Point=x45(targetPoint,cell)
var poY:Point=y45(targetPoint,cell)
var x:Number=poX.x+poY.x-cell.leftVertex.x;
var y:Number=poX.y+poY.y-cell.leftVertex.y;
return new Point(x,y)
}
/**
*获取棋盘整型坐标
* @param point
* @return
*
*/
public static function getIndex(point:Point,cell:CellGird45):Point
{
point==null?point=new Point:''
var pox:Number= Math.floor((point.x-cell.leftVertex.x)/cell.cellWidth - (point.y-cell.leftVertex.y)/cell.cellHeight);
var poy:Number=Math.floor((point.x-cell.leftVertex.x)/cell.cellWidth + (point.y-cell.leftVertex.y)/cell.cellHeight);
return new Point(pox,poy)
}
/**
*将45度坐标转换为直角坐标系
* @param point
* @return
*
*/
public static function local45ToGlobal(point:Point,cell:CellGird45):Point
{
var size:Number=cell.cellHeight;
var pox:Number=cell.leftVertex.x+size*(point.x+point.y);
var poy:Number=cell.leftVertex.y+size/2*(point.y-point.x);
return new Point(pox,poy)
}
;
public static function symmetryChange(oldSide:Point,newSide:Point,camerPoint:Point,oblPoint:Point):Point
{
var dirX:int=newSide.x-oldSide.x
var dirY:int=newSide.y-oldSide.y
if(dirX!=0)
{
dirX>0?dirX=1:dirX=-1
}
if(dirY!=0)
{
dirY>0?dirY=1:dirY=-1
}
var disx:int=(oblPoint.x-camerPoint.x)*dirX;
var disy:int=(oblPoint.y-camerPoint.y)*dirY;
var newPoint:Point=new Point(oblPoint.x+disx*2,oblPoint.y+disy*2)
return newPoint
}
/**
*
* @param point
* @param cell
* @param isReverse
* @return
*
*/
public static function fitPoint(point:Point,cell:CellGird45,isReverse:Boolean=false):Point
{
var newPoint:Point
if(isReverse){
newPoint=local45ToGlobal(getIndex(point,cell),cell)
return getIndex(newPoint,cell)
}
newPoint=getIndex(point,cell)
return local45ToGlobal(newPoint,cell)
}
/**
*平面90度旋转转换
* @param camerPoint
* @param oldPoint
* @param cell
* @param dir
* @return
*
*/
public static function rotationChange2(camerPoint:Point,oldPoint:Point,cell:CellGird45,dir:int=-1):Point
{
if(!Rectangle45.ARI_MODE)camerPoint=new Point;
//var radian:Array=[dir*Math.PI*.5,Math.PI,3*Math.PI/2,2*Math.PI]
var x:Number=oldPoint.x-camerPoint.x;
var y:Number=oldPoint.y-camerPoint.y
var radius:Number=Math.sqrt(x*x+y*y)
var angle2:Number=Math.atan2(x,y)
var u:Number=Math.round(camerPoint.x+Math.sin(dir*Math.PI*.5+angle2) * radius);
var v:Number=Math.round(camerPoint.y+Math.cos(dir*Math.PI*.5+angle2) * radius)
var point:Point=new Point( u,v);
return point
}
}
}
/**
*45度坐标系
* 45度转换单位
* code wxsr
*/
package com.engine.data.referenceFrame45
{
import flash.geom.Point;
import flash.net.registerClassAlias;
public class CellGird45
{
private var _anglex:Number=Math.asin(1/Math.sqrt(5))
private var _angley:Number=Math.asin(2/Math.sqrt(5))
private var _origin:Point;
private var _leftVertex:Point;
private var _topVertex:Point
private var _rightVertex:Point;
private var _bottonVertex:Point;
private var _midpoint:Point;
private var _cellSize:Number
private var _cellWidth:Number
private var _cellHeigth:Number;
private var _key:String;
private var _keyPoint:Point
private var _type:uint=1
private var _color:uint=0xffff00;
private var _lock:Boolean;
public var source:String;
//信息所属的元件id
public var imgKey:String
public function CellGird45(cellSize:Number=25,originPoint:Point=null)
{
registerClassAlias("com.save.cellGird45",CellGird45)
registerClassAlias("com.save.point",Point)
this.cellSize=cellSize
if(originPoint==null)
{
this.origin=new Point()
}else {
this.origin=originPoint;
}
}
/**
* 是否不可设置
* @return
*
*/
public function get lock():Boolean
{
return this._lock
}
public function set lock(val:Boolean):void
{
this._lock=val
}
/**
* 类型
* @return
*
*/
public function get type():uint
{
return this._type
}
public function set type(val:uint):void
{
this._type=val
}
/**
* 颜色
* @return
*
*/
public function get color():uint
{
return this._color
}
public function set color(val:uint):void
{
this._color=val
}
/**
* 注册点
* @param point
*
*/
public function set origin(point:Point):void
{
this._origin=point;
var x:Number=this._origin.x;
var y:Number=this._origin.y;
var size:Number=this._cellHeigth
size=24
this._leftVertex=new Point(x,y+size/2)
this._topVertex=new Point(x+size,y)
this._rightVertex=new Point(x+size*2,y+size/2)
this._bottonVertex=new Point(x+size,y+size)
this._midpoint=new Point(x+size,y+size/2)
}
/**
* 单元格大小
* @param val
*
*/
public function set cellSize(val :Number):void
{
this._cellWidth=(val*this._angley*2);
this._cellHeigth=(this._cellWidth/2)
this._cellSize=val
}
/**
* 单元格宽度
* @param val
*
*/
public function set cellWidth (val:Number):void
{
this._cellWidth=(val);
this._cellHeigth=val/2
this._cellSize=val/this._angley*.5
}
/**
* 单元格高度
* @param val
*
*/
public function set cellHeight(val:Number):void
{
this._cellWidth=(val*2);
this._cellHeigth=val
this._cellSize=val/this._anglex*.5
}
/**
* 索引点
* @param point
*
*/
public function set keyPoint(point:Point):void
{
this._keyPoint=point;
this._key=point.x+','+point.y
}
public function get keyPoint():Point
{
return this._keyPoint;
}
/**
* 键值
* @return
*
*/
public function get key():String
{
return this._key;
}
public function get cellSize():Number
{
return this._cellSize
}
public function get cellWidth():Number
{
return this._cellWidth
}
public function get cellHeight():Number
{
return this._cellHeigth
}
public function get origin():Point
{
return this._origin;
}
public function get leftVertex():Point
{
return this._leftVertex;
}
/**
*顶部的点
* @return
*
*/
public function get topVertex():Point
{
return this._topVertex;
}
/**
*右边的点
* @return
*
*/
public function get rightVertex():Point
{
return this._rightVertex;
}
/**
* 下方的点
* @return
*
*/
public function get bottonVertex():Point
{
return this._bottonVertex;
}
/**
* 中间的点位置
* @return
*
*/
public function get midpoint():Point
{
return this._midpoint;
}
}
}
发表评论
-
as3 Loader 加载资源后内存泄露无法释放的问题。
2014-06-21 10:30 636as3 Loader 加载资源后内存泄露无法释放的问题。 ... -
as3判断flash player版本的函数
2014-06-10 20:35 793//判断当前版本是否高于9.0.115.0为例子. pr ... -
CSS 中文字体的英文名称 (simhei, simsun) 宋体 微软雅黑
2014-04-03 15:25 960华文细黑:STHeiti Light [STXihei]华文 ... -
as3.0的垃圾回收机制
2013-09-07 14:02 1460还是同样的博客,还是同样的作者(Daniel Sidhio ... -
AIR程序多开
2013-09-07 13:55 965AIR应用通常不能像QQ那样能进行多开操作。为了让一个用AI ... -
starling性能优化总结
2013-07-22 14:06 1440在项目开发的过程中总结了一下starling的性能优化方案: ... -
AS3 Socket从零开始
2013-07-22 12:54 1066大家如果想学AS3 Socket直接在百度里搜一下,会找到很 ... -
绕开AS3安全沙箱 跨域加载SWF
2013-07-11 12:53 862AS3的安全沙箱的确是 ... -
解决AS3在ie中初始化时stageWidth和stageHeight为0
2013-06-14 09:23 968先看下面的一段脚本,这是比较经典的初始化脚本: pac ... -
动态获取swc中的类
2013-05-25 10:32 908想通过代码生成,来获取swc中的类,并且可以作为普通类正常使 ... -
AS3 中字符串的format功能实现
2013-05-25 10:19 803使用C#的朋友都知道,string.Format();还是挺 ... -
总结调用Flash的几种方法
2013-05-02 16:18 1622一、Adobe 提供的方法 <object wi ... -
Flash3D错误集锦
2013-05-02 14:03 891VerifyError: Error #1014: 无法找到 ... -
使用scale拉伸之后的坐标问题
2013-04-12 09:38 1235最近发现论坛多了很多 ... -
30个实用的网页设计工具
2013-03-20 09:58 779作为一位网页设计师或开发者,你一直需要搜寻获取强大的网页设计 ... -
如何成为强大的程序员?
2013-03-11 11:27 694Aaron Stannard是新创公 ... -
漫谈重构
2013-03-11 11:09 817因为工作内容的原因, ... -
AS3使用谷歌API生成二维码
2012-12-10 16:24 1309二维码在新闻杂志,网站,网络广告,电视广告等地方随处可见 ... -
OOP的聚合原则
2012-12-10 16:21 896什么是聚合? 聚合可以很好地表达对象是什么和做 ... -
压缩速率追踪
2012-11-02 14:16 1424Flash Player 11.3添加了一个压缩和解压B ...
相关推荐
火星坐标转换经纬度,火星坐标系转换软件工具【支持批量】 火星坐标转换工具,支持批量转换 火星坐标转换到地球坐标 地球坐标转换到火星坐标 批量转换工具
目前,网上也有一些其它的坐标转换工具,但它们很可能会改变shp数据转换前后结构的一致性。而这款工具就没有这种问题,甚至你都不要安装GIS软件,就可以在本地快速进行shp数据的坐标转换! 一、功能描述 1.支持WGS84...
基于FME的CAD数据坐标转换工具开发及实现.pdf
1.支持WGS84、GCJ02、BD09坐标系shp数据的互转 2.不依赖GIS软件,工具本身即可独立运行 3.共6个单独程序对应6种转换情况,可按需选择。
java实现2000坐标转wgs84,WGS84和cgcs2000互转,使用String字符串解析和三参数算法实现,只需坐标就能实现
可以进行栅格数据以及shapefile的 WGS84与上海本地坐标互转
该工具用于WGS1984坐标系转“火星坐标系”,转化过后的数据可以与Google Map在线地图数据匹配,减小偏差;该工具运行环境是AE10.0,用于简单点、线、面shp文件的转换。
xdc坐标转换工具箱,支持84坐标系转火星、百度等坐标系
矢量数据坐标转换,北京84、西安54、WGS84坐标投影之间的转换工具,还支持南海七参数转换
该工具利用“火星坐标系”转WGS1984坐标系算法密钥,进行“火星坐标系”转换为真实的WGS1984坐标系,可以精确将从google map中的数据转化为真实的数据。该工具运行环境是AE 10.0,可以针对简单的点、线、面shp数据...
GIS点、线、面数据WGS1984转百度坐标系、火星坐标系,以及百度坐标系、火星坐标系转为点WGS1984的工具,一键操作。
结果显示:对于星固坐标系和星体天球坐标系下探测器轨道数据精度较高的情况,一步转换法优于两步转换法和四元数解析法;对于星固坐标系下探测器轨道数据精度不高的情况,四元数解析法优于一步转换法和两步转换法;对于...
我们在软件处理样点数据之前,可能有些数据需要进行54、80、84之间的转换
2018年1月31日经国家测绘产品质量检验测试中心组织初审、测评、结果审议,并经国家测绘地理信息局审核,确定“海量地理信息数据坐标系统转换平台”通过“2000国家大地坐标系转换软件测评”软件测评。 1.可进行海量4D...
经纬度wgs84格式转大地坐标格式,经纬度wgs84数据来源为TXT文档,wgs84一组数据包含GPHPD、GPGGA、GPHDT3小组数据
支持火星坐标(奥维)与 wgs84坐标(Google Earth)坐标批量通过电子表格方式相互转换 使用方法: 双击exe执行程序,按提示选择是生成模板还是进行转换。已有模板表格情况下,模板填入相应信息保存并关闭电子表格,...
提供小工具和源代码完成WGS84转GCJ02、GCJ02转WGS84、GCJ02转百度坐标系(BD-09)、百度坐标系(BD-09)转火星坐标系(GCJ-02)、WGS坐标转百度坐标系(BD-09)、百度坐标系(BD-09)转WGS84坐标
呼和浩特建筑物面数据shp格式,,CGCS2000坐标系,包含建筑面要素和楼层信息,可在arcgis打开,编辑
coord(geographic coordinates)是一个处理地理坐标系的JS库,用来修正百度地图、高德地图及其它互联网地图坐标系不统一的问题。 支持转换坐标数组和GeoJSON数据,能在node环境以及所有现代浏览器(IE8+)中运行,...
七参数坐标转换工具依据不同的坐标对数据,工具可以自动求取七参数的数据。(1)选择对应的源椭球参数和当地坐标系椭球参数(北京54或者西安80) (2)选择投影参数 (3)选择椭球转换参数 (4)保存后弹出坐标列表 ...