兰伯特72到LatLong C#
我正在寻找一种算法将lambet72坐标转换为lat/long. 因此,例如Lambert72坐标148990,169450必须转换为50.83546802746704,4.354415218851164,但大多数算法的偏移很少(请参阅附件). 这是我发现的算法之一,但仍然有错误. 有人有更好的算法? static void Lambert72ToLatLong(double x, double y, ref double longitude, ref double latitude) { const double n = 0.77164219; const double F = 1.81329763; const double thetaFudge = 0.00014204; const double e = 0.08199189; const double a = 6378388;
8 2024-04-26
编程技术问答社区
C#旋转(变换)问题
我正在尝试创建程序,其中将是画布上画的鱼类的列表. (下一步将根据一些计算改变鱼类的位置) 每条鱼都由位图表示(PNG文件7x12 PX带有鱼的图片). 我创建的表单是我的图纸画布.它的尺寸为640x480 px. 在下面的代码中是我使用的简化代码(我剪切了所有不是必要的东西).我的问题是使用变形矩阵,目前仅旋转. 问题在类鱼类中 方法draw()每条鱼的旋转30度,但后来每条鱼的起始旋转角度将不同.我想通过围绕其中心的旋转角度将鱼旋转的何处转换.因此,在这种情况下,所有鱼类都应在一条线中,并通过其旋转角度旋转(此处为30度). ,但它们被放在对角线上,因此转换以某种方式弄乱了. 我怎样才能解决这个问题? 我可能不正确地使用诱导性. 使用类中的名称空间 using System.Drawing;//Graphics, Point using System.Drawing.Drawing2D;//Matrix 鱼 class Fish {
2 2024-04-25
编程技术问答社区
C# WindowsForms PictureBox: 控件坐标与图像中像素位置之间的转换
我有一个带有图像框的控件.图片框显示图像(至少在这种特殊情况下,在缩放模式下).我需要做两种事情: 单击鼠标,找出我点击的图像的哪个像素 在图像中给定的列的图片框上绘制一条垂直线. 显然,我需要在图像中的控制坐标和像素的(行,列)之间进行某种坐标转换.我可能找到的第一个(www.codeproject.com/articles/20923/mouse-position-over-image-image-in-a-picturebox),但反之亦然.有什么想法吗? 解决方案 我可以建议一个"解决方法":您不在图片框上绘制线路等,而是使用其图形在位图本身上.然后,您只能使用图像坐标(行,列),而无需从控件转换为图像.另一种方式(从鼠标单击到行和列),您提到并可以使用. 其他解决方案 尝试在位图上绘制图形元素而不是在包含picturebox上的图形元素后,我发现这种方法笨拙:它带来了比解决的问题更多的问题.我回到了TAW的建议( posting,函数SetImag
4 2024-04-24
编程技术问答社区
将一个矩形的坐标转换为另一个矩形的坐标
在上图中,我显示了两个矩形 矩形1 其x可以从-900到13700不等,y可以从-600到6458 不等 矩形2 其坐标x可以从0到3000不等,y可以从0到2000 也: 矩形2 在左上位置(0,0)具有起点2,高度/2). 我需要做的:要使用缩放或翻译将矩形1 的点转换为矩形2 的点. 那么,x和y坐标应该是什么,以将矩形1 的坐标转换为矩形2 ?? 解决方案 如果: Rectangle 1 has (x1, y1) origin and (w1, h1) for width and height, and Rectangle 2 has (x2, y2) origin and (w2, h2) for width and height, then Given point (x, y) in terms of Rectangle 1 coords, to convert it to Rectangle 2 coords: xNew = ((
如何投影OpenGL控件的顶部和底部区域(圆柱形投影)?
使用以下代码我可以在OpenGL控件中显示图像.处于矩形形状.现在,我想将该矩形的顶部和底部区域投影到圆柱形的形状.我的意思是需要在OpenGL上进行矩形至圆柱体投影.我该如何实现? private void CreateShaders() { /***********Vert Shader********************/ vertShader = GL.CreateShader(ShaderType.VertexShader); GL.ShaderSource(vertShader, @"attribute vec3 a_position; varying vec2 vTexCoord; void main() { vTexCoord = (a_positi
8 2024-04-11
编程技术问答社区
如何将2D显示坐标映射到3D OpenGL空间
我正在制作一个3D游戏,该游戏已在Android上移植,我想在游戏的3D课程中进行触摸事件.我需要在3D空间中,就在剪裁平面附近,但我所能获得的只是来自Android显示器的2D坐标.因此,有什么方法可以将这些(x,y)坐标映射到3D空间中的(x,y,z)坐标? 编辑 好吧,我正在从事赛车游戏,我想根据我单击的位置将一些项目插入课程.我有这个功能: void racing_mouse_cb(int button, int state, int x, int y) { //parameters (x,y) are coords of a display set_ill_fish(get_player_data( local_player())->view); } 但现在我在一定距离的玩家面前插入物品: void set_ill_fish(view_t view) { item_locs[num_items].ray.pt.x = view.ply
12 2024-04-09
编程技术问答社区
有没有一种方法可以根据GPS坐标阵列,以编程方式确定最佳的Bing地图缩放级别?
当编程方式将GPS坐标数组添加到Bing地图时,我想将Zoom级别设置为最佳 - 显示每个Pushpin/位置,但"几乎没有." . 我想一种方法是确定在坐标阵列中发现的基数方向中最远的点,然后计算您需要显示多少英里. 例如,假设最远的北部和最远的南部位置被确定为彼此距离40英里,而最远的东部和最远的西部位置被确定为相距六十英里.是否有一条经验/计算/算法的规则可以确定最"缩放"级别将显示所有位置/坐标的级别,而"异常值"与显示部分的边缘一样靠近地图? 解决方案 您可以设置带有边界框的地图视图,该框将自动确定缩放级别.在这里查看示例 mapcontrol/isdk/setMapViewOptions 使用此处记录的边界属性 https:https://学习. microsoft.com/en-us/bingmaps/v8-web-control/map-control-api/viewoptions-object
16 2024-03-31
编程技术问答社区
ggplot2 3.1.0中的自定义Y轴刻度和次级Y轴标签
编辑2 ggplot2-ackage的当前发展版确实解决了下面的问题中提到的错误.使用 安装开发版本 devtools::install_github("tidyverse/ggplot2") 编辑 GGPLOT2 3.1.0中sec_axis的错误行为似乎是一个错误.开发人员已经认可了这一点,他们正在研究修复程序(请参阅 目标 我有一个图形,其中y轴范围为0到1.我想添加一个次级y轴,该轴轴范围为0至0.5(恰好是主要Y轴值的一半).到目前为止没问题. 使事情变得复杂的是,我对y轴有一个自定义转换,其中y轴的一部分是线性显示的,而剩下的对数(示例请参见下面的代码).有关参考,请参见这篇文章 or or 这个. 问题 使用GGPLOT2版本3.0.0,它可以很好地工作,但使用最新版本(3.1.0)不再起作用.请参阅下面的示例.我不知道如何在最新版本中修复它. 来自 sec_axis()和dup_axis()现在返回适当的休息 二级轴应
6 2024-03-23
编程技术问答社区
如何计算一个三维坐标的线性指数,反之亦然?
如果我有一个点(x,y z),我该如何找到线性索引,我就在那个点?我的编号方案是(0,0,0)为0,(1,0,0)是1,. . .,(0,1,0)是max-x差异,.... 另外,如果我有线性坐标,我,如何找到(x,y,z)? 我似乎在Google上找不到这一点,所有结果都充满了其他无关的东西.谢谢! 解决方案 有几种方法将3D坐标映射到单个数字.这是一种方法. 一些函数f(x,y,z)给出坐标的线性索引(x,y,z).它具有一些我们想要得出的常数A,B,C,D,因此我们可以编写有用的转换功能. f(x,y,z) = a*x + b*y + c*z + d 您已指定(0,0,0)映射到0.因此: f(0,0,0) = a*0 + b*0 + c*0 + d = 0 d = 0 f(x,y,z) = a*x + b*y + c*z 解决了. 您已经指定了(1,0,0)映射到1.因此: f(1,0,0) = a*1 + b*0 + c*0 = 1 a
2 2024-03-05
编程技术问答社区
Angular ng如果不使用剃刀语法,就无法工作
我正在使用Angular-Openlayers指导来构建我的项目. 我试图重写 geojson部分是因为我会动态获取点信息.因此,我将Geojson的源部分放到了内部,而不是从JSON文件中加载.但是,我的代码位置完全不同. 结果假设在设置该坐标处显示一个点.但是点就像[0,0].如果我将使用JSON文件的加载更改为使用,那将有效. 我不知道为什么坐标会这么多.如果有人知道原因,请告诉我!我会很感激. 以下是我的代码: source: { type: "GeoJSON", projection: 'EPSG:4326', geojson: { object: { type: "FeatureCollection", features: [{
12 2024-02-24
编程技术问答社区
OpenCV、OpenGL和Android传感器之间的参考坐标系变化
我正在与 OpenCV , Android 和 OpenGl 用于增强现实项目.据我所知,OpenGL中的坐标系统是 OPENCV坐标系是: 将这些设备与Android传感器相结合时,如何进行坐标系转换和[R | T]矩阵转换?是否有一个好的教程或文档来解释所有这些conflo的东西? 解决方案 如果您查看图片,那么您会发现,两个坐标系都有相同的手,但是OpenCV ONE绕X轴旋转.这可以由以下旋转矩阵表示: 1 0 0 0 -1 0 0 0 -1
4 2024-02-17
编程技术问答社区
从世界坐标转换到瓦片位置
我和一个朋友正在尝试为使用Google Maps的类构建一个Android应用程序,我们已经花了几天的时间来处理这个错误. 理想情况下,应用程序会收到用户位置的更新,存储它们,并在任何存储的坐标上绘画.事实证明,这是一场噩梦,因此,如果该瓷砖包含用户访问的坐标,我们现在只是在整个瓷砖上绘画.但是,我们认为从坐标到瓷砖位置的转换有问题,因为缩放越高,我们的绘制瓷砖向北移动的越多,从实际的坐标向西移动. private boolean isCoordInTileForZoom(int tileX, int tileY, int zoom) { //coordinate to check if they are in the current tile float lon = WILF_TEST_COOR.x; float lat = WILF_TEST_COOR.y; //coordinates in terms of map length and
24 2024-02-16
编程技术问答社区
在视图上绘制多段线时坐标比例不正确
我想在view上绘制polyline.我不想在MapView上绘制它,因为我只想要没有任何背景的polyline. 我有polyline坐标,我也有其界限(东北和西南坐标). 这个想法是创建一个自定义view并在那里绘制路径.我相信我遇到的问题是规模.我可以将LatLng坐标转换为x和y坐标,但是在view上显示的多线线太小. view设置为64dp宽度和高度. 这是我在做的: public PolylineView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); polylineSize = (int) context.getResources().getDimension(R.dimen.polyline_size); setupAttributes(attrs); } pri
12 2024-02-11
编程技术问答社区
将WGS84转换为OSGB36
是否有任何已知的Java库,可以使我可以将WGS 84线转换为OSGB36,或者如果我可以使用一个好的公式?我目前正在使用这个,但这不是很准确,所以我想知道我可以使用更好的. private static double[] Wgs84ToBNG(double inLat, double inLon) { double lat = inLat * Math.PI / 180.0; double lon = inLon * Math.PI / 180.0; double a = 6377563.396; // Airy 1830 major & minor semi-axes double b = 6356256.910; double F0 = 0.9996012717; // NatGrid scale factor on central meridian double lat0 = 49 * Math.PI / 180.0; //
24 2024-02-10
编程技术问答社区
将WGS84转换为长/短纬度
嗨 我在弄清楚如何在坐标类型之间转换时遇到了一些麻烦.我有一个带有以下描述 的坐标集列表 "坐标始终在WGS84系统中.所有坐标a表示为整数 值x和y,其中坐标值乘以1,000,000." 一个例子: 559262 6319512 好吧,我需要将它们转换为长/lat(和后背),以便我可以在Google Maps(Android)中使用它们.但这并不像接缝那样容易.我一直在搜索并确实找到了一些代码来执行此操作,但是它并不能正常工作.谁能提供一些代码来执行此操作?如果可能的话,我想避免使用一个大的地理框架(必须在Android应用程序中使用). 谢谢. 最诚挚的问候,肯尼斯 编辑: 我确实自己找到了一个解决方案.我下载了这里描述的课程: coordConvert/ 它可以正常工作.希望有人能发现它有用. 我很抱歉在进行工作之前发布.感谢所有发布 的人 解决方案 如果您是从Android上的GPS获得位置,则将获得一个位置对象,该对象可容纳L
8 2024-02-04
编程技术问答社区
在安卓系统中,将LatLng偏移一定数量的米。
我有一个LatLng对象,我想将其坐标向东500米.我找不到内置方法.我已经看过 https://gis.stac.stackexchange.com/a/2964 ,但我的结果太不准确了(大约15%)实际使用.如何在米中进行精确的转移? 注意:我是不是寻找移动Google Maps摄像头,我知道该怎么做. 我尝试过: static final double KILOMETERS_PER_DEGREE = 111.111; static LatLng offsetLongitude(LatLng initialCoords, float horizontalOffsetInMeters){ double degreeOffset = 1.0 / KILOMETERS_PER_DEGREE * horizontalOffsetInMeters / 1000.0; double longitudeOffset = Math.cos(initialCoord
4 2024-02-03
编程技术问答社区
陀螺仪传感器的漂移和正确角度的估计
我正在使用LG Optimus 2X智能手机(陀螺仪和加速度计传感器)进行定位. 我想从陀螺仪中获取正确的旋转角度,以稍后用于身体到地球坐标转换.我的问题是 如何测量和去除陀螺仪传感器中的漂移. 一种方法是在一段时间内采集陀螺仪样本的平均值(移动状况处于静态状态时)并从当前样本中减去这不是好方法. 当移动移动/运动时如何获取自由角? 据我所知, 解决方案 在Sensormanager中实现了Kalman过滤器或类似的东西.请查看 Android设备上的传感器融合:运动处理中的革命. . 您正在尝试解决一个已经解决的问题. 其他解决方案 我是指南针应用程序的作者,该应用程序集成了来自磁性和陀螺仪传感器的数据(稳定的指南针).我已经在运行Android 2.2的LG Optimus Black(您可以在视频中看到的设备)测试了此应用程序,因此我将分享我的经验: 陀螺仪读数非常准确.该传感器与加速度计和磁性传感器相反,这些传感器和磁性传感器具
20 2024-01-31
编程技术问答社区
安卓OpenGL ES 2.0屏幕坐标转换为世界坐标
我正在构建一个使用OpenGL ES 2.0的Android应用程序,并且我遇到了墙壁.我正在尝试将屏幕坐标(用户触摸)转换为世界坐标.我已经尝试阅读和玩Glu.gluunproject,但我要么做错了,要么只是不了解. 这是我的尝试.... public void getWorldFromScreen(float x, float y) { int viewport[] = { 0, 0, width , height}; float startY = ((float) (height) - y); float[] near = { 0.0f, 0.0f, 0.0f, 0.0f }; float[] far = { 0.0f, 0.0f, 0.0f, 0.0f }; float[] mv = new float[16]; Matrix.multiplyMM(mv, 0, mViewMatrix, 0, mModelMatr
28 2024-01-28
编程技术问答社区
是否有可能在OpenGL中获得立方体的哪个表面将被点击?
我已经创建了一个立方体及其旋转.我的任务是您单击哪个旋转立方体. ex,如果您单击立方体中的表面红色,那么我将赢,但我无法找到Cube的单击表面视图, 编辑 这是我的渲染码: public void onDrawFrame(GL10 arg0) { // GLES20.glEnable(GLES20.GL_TEXTURE_CUBE_MAP); GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT); GLES20.glUseProgram(iProgId); cubeBuffer.position(0); GLES20.glVertexAttribPointer(iPosition, 3, GLES20.GL_FLOAT, false, 0, cubeBuffer); GLES20.glEnableVerte
14 2024-01-28
编程技术问答社区
从设备坐标系到绝对坐标系的加速度
从我的Android设备中,我可以读取线性加速度值的数组(在设备的坐标系中)和绝对方向值(在地球坐标系中)的数组.我需要的是获得后一个坐标中的线性加速度值.系统. 如何转换它们? 编辑在评论中回答后: 好吧,因此,如果我正确理解,当我测量线性加速度时,手机的位置完全无关紧要,因为读数是在地球坐标系统中给出的.对吗? ,但我只是进行了一个测试,我将手机放在不同的位置,并在不同的轴上加速.有3对图片 - 第一批显示我如何放置设备(对不起我的油漆"主技巧"),第二张图片显示了从线性ACC提供的数据中显示的读数.传感器: 设备放在左侧 躺在背上的设备 设备站立 现在 - 为什么在第三种情况下,加速度沿z轴(不是y)发生,因为设备位置无关紧要? 解决方案 我终于设法解决了它!因此,要获得加速矢量 地球坐标系您需要: 获取旋转矩阵(float[16],因此以后可以由android.opengl.Matrix class)从SensorMa