在这个SO问题中,有人要求从三个点计算角度.我需要做相反的事情.
我想画一个时钟,我有很小的刻度图像.一个艺术家伙制作了60个,每个人都有一个个性和准确的阴影.因此,在10x10点处有60个不同的图像,已经在该正方形的中心正确旋转.
因此,必须每6度一个刻度图像放置.我只需要根据中心点,半径和角度计算x/y坐标.
所以我有:
有没有一种简单的方法来计算x/y坐标?也许cocoa-touch已经有了一个有用的功能或方法吗?
如何识别和删除图像中绘制的四个RED点

这四个点使该多边形成为凹多边形,这就是我想要删除它的原因.
我的目标是通过识别和删除这些点来删除这种点,从而将凹多边形转换为凸面.
有没有办法识别和删除这些点?
谢谢
我有一个包含很多多边形的地图,其中一个有一个点,如下所示:

多边形边缘的x和y坐标保存在这样的数据库中(例如):
Polygon(Point(11824, 10756), Point(11822, 10618), Point(11912, 10517), Point(12060, 10529), Point(12158, 10604), Point(12133, 10713), Point(12027, 10812), Point(11902, 10902)),
Polygon(Point(11077, 13610), Point(10949, 13642), Point(10828, 13584), Point(10772, 13480), Point(10756, 13353), Point(10849, 13256), Point(10976, 13224), Point(11103, 13294), Point(11171, 13414), Point(11135, 13558)),
Polygon(Point(11051.801757813, 11373.985351563), Point(11165.717773438, 11275.469726563), Point(11281.733398438, 11255.646484375), Point(11381.07421875, 11333.15625), Point(11440.202148438, 11467.706054688), Point(11404.73046875, 11584.534179688), Point(11301.662109375, 11643.852539063), Point(11169.486328125, 11644.079101563), Point(11067.555664063, 11579.676757813), Point(11018.21484375, 11454.750976563)),
Polygon(Point(12145, 13013), Point(12069.065429688, 13014.67578125), Point(12012.672851563, 12953.833984375), Point(11973.942382813, 12910.14453125), Point(11958.610351563, 12853.736328125), Point(11988.58203125, 12780.668945313), Point(12046.806640625, 12735.046875), Point(12117.080078125, 12729.838867188), Point(12185.567382813, 12743.389648438), Point(12225.575195313, 12803.530273438), Point(12255.934570313, 12859.2109375), …Run Code Online (Sandbox Code Playgroud) 任何人都可以建议如何计算三点之间的角度(纬度长坐标)
A : (12.92473, 77.6183)
B : (12.92512, 77.61923)
C : (12.92541, 77.61985)
Run Code Online (Sandbox Code Playgroud) 如何找到原点为0,1的点与另一点(如下图中的)之间的角度(0 到 360 度,顺时针旋转) ?这是我需要的一个有点粗略的说明:0.3,-0.170,0

左边的圆圈纯粹是为了显示我希望角度旋转的方向,以及它们从哪里开始/结束。右图给出了我将提供给代码的输入示例(即0.3,-0.17)。绿线是结果角度。
如何在 C++ 或 JavaScript 中找到如上所述的两点之间的角度?
我正在动态渲染SVG图像并创建旋转文本.如果旋转的文本与其他文本重叠,我需要删除该文本.但我无法测量旋转的文本来创建边界并检查下一个标签文本区域.
我已经创建了3个SVG元素来解释.
我将动态地将文本旋转到任何角度.如果在旋转文本时它重叠,我需要以编程方式删除重叠的文本.
<div style=" width: 150px;height: 150px;">
<svg style="width: 250px; height: 144px; border: solid black 1px;">
<text id="XLabel_0" x="75" y="30">Sprint 13_March_2015</text>
<text id="XLabel_1" x="100" y="30">DT_Apr2015_Sprint13</text>
</svg>
<svg style="width: 250px; height: 144px; border: solid black 1px;">
<text id="Label_0" x="75" y="30" transform="rotate(10, 75, 34.5)">Sprint 13_March_2015</text>
<text id="XLabel_1" x="100" y="30" transform="rotate(10, 100, 34.5)">DT_Apr2015_Sprint13</text>
</svg>
<svg style="width: 250px; height: 144px; border:solid black 1px;">
<text id="XLabel_0" x="75" y="30" transform="rotate(50,94,34.5)">Sprint 13_March_2015</text>
<text id="XLabel_1" x="100" y="30" transform="rotate(50,123,61)" >DT_Apr2015_Sprint13</text>
</svg>
</div>Run Code Online (Sandbox Code Playgroud)
谁有人建议解决方案?
给定一个元素数组和确定两个元素是否“相同”的标准,返回一个新数组,其中连续的“相同”元素已被删除,仅留下端点。例如:
a = [ {k:'a',v:1}, {k:'b',v:1}, {k:'c',v:1},
{k:'d',v:2}, {k:'e',v:2},
{k:'f',v:3}, {k:'g',v:3}, {k:'h',v:3}, {k:'i',v:3}, {k:'j',v:3},
{k:'k',v:2},
{k:'l',v:4}, {k:'m',v:4}, {k:'n',v:4}, {k:'o',v:4} ]
b = a.collapse_consecutive{ |h| h[:v] }
#=> [ {k:'a',v:1}, {k:'c',v:1},
#=> {k:'d',v:2}, {k:'e',v:2},
#=> {k:'f',v:3}, {k:'j',v:3},
#=> {k:'k',v:2},
#=> {k:'l',v:4}, {k:'o',v:4} ]
Run Code Online (Sandbox Code Playgroud)
当在线图上绘制n 个点时,一系列连续的相同值结果对图形没有影响,除了端点之外。在下图中,黑色样本对最终图表没有影响。我正在存储精细采样的图表,并且理想情况下希望删除所有不相关的样本。

对于这个问题,我将问题简化为仅删除水平部分上的黑点,因为识别沿着有角度的线性部分的点(a)更难并且(b)更罕见(在我的例子中)。
到目前为止,我想出的最好的解决方案是依赖于数组索引的解决方案:
class Array
def collapse_consecutive
select.with_index{ |o,i|
i==0 || yield(self[i-1])!=yield(o) ||
!self[i+1] || yield(self[i+1])!=yield(o)
end
end
end
Run Code Online (Sandbox Code Playgroud)
这是可行的,但在 Ruby 中依赖数组索引通常是“代码味道”:这表明有更优雅的实现可用。
任何人都可以告诉我,如何根据用户给出的触摸旋转视图....
我的意思是我想像旧电话那样做出类似的外观(按下并旋转拨号......)......
我很清楚如何旋转,但根据这种情况无法旋转.....
我有 3 个点 p1(x1, y1)、p2(x2, y2) 和 p3(x3, y3)。我正在尝试计算这三个点之间的角度(逆时针方向)。我正在使用多个博客和 SE 网站中提供的以下点积方法(如下所示)。
def angle_between(p1, p2, p3):
x1, y1 = p1
x2, y2 = p2
x3, y3 = p3
v21 = (x1 - x2, y1 - y2)
v23 = (x3 - x2, y3 - y2)
dot = v21[0] * v23[0] + v21[1] * v23[1]
det = v21[0] * v23[1] - v21[1] * v23[0]
theta = np.rad2deg(np.arctan2(det, dot))
print(theta)
Run Code Online (Sandbox Code Playgroud)
它为我提供了不在直线上的任何点的正确角度。例如
p1 = (0, 0)
p2 = (1, …Run Code Online (Sandbox Code Playgroud) 我想在Java/Android中开发一种财富之轮.当用户触摸屏幕时,我检测到了移动,并且对于每个变化,我计算旧压力和最新压力之间的角度(函数onScroll).我有一个问题,因为我不记得我如何计算3点之间的角度......
我开发了3个函数,但每个函数都给了我一个不同的结果:
public class Test {
public static void main(String[] args) {
Test test = new Test();
Point center = new Point(2.26f, 2.26f);
Point current = new Point(2.54f, 3.64f);
Point previous = new Point(2.25f, 3.73f);
System.out.println("1) Angle is "
+ test.function1(center, current, previous));
System.out.println("2) Angle is "
+ test.function2(center, current, previous));
System.out.println("3) Angle is "
+ test.function3(center, current, previous));
System.out.println("################################");
center = new Point(2.26f, 2.26f);
previous = new Point(3.29f, 1.04f);
current = new Point(0.98f, 2.25f);
System.out.println("1) Angle is "
+ …Run Code Online (Sandbox Code Playgroud) math ×4
angle ×3
geometry ×2
iphone ×2
java ×2
javascript ×2
.net ×1
algorithm ×1
android ×1
arrays ×1
c# ×1
c++ ×1
cocoa-touch ×1
html5 ×1
jquery ×1
jts ×1
numpy ×1
objective-c ×1
point ×1
polygon ×1
python ×1
python-3.x ×1
ruby ×1
svg ×1
trigonometry ×1