我有以下无向图
gr={1->2,1->3,1->6,1->7,2->4,3->4,4->5,5->6,5->7};
Run Code Online (Sandbox Code Playgroud)
我想用GraphPlot以'菱形'格式绘制.我这样做如下所述(方法1)给出以下内容:

问题是这种表示具有欺骗性,因为顶点4和1或1和5之间没有边缘(边缘是4到5).我希望改变边缘{4,5}的路线,得到如下内容:

我通过包含另一条边{5,4}来做到这一点,现在我可以使用MultiedgeStyle来"移动"有问题的边缘,然后通过定义EdgeRenderingFunction来消除添加的边缘,从而不显示有问题的线条.(方法2,'解决方法').至少可以说这很尴尬.有没有更好的办法?(这是我的第一个问题!)
方法1
gr={1->2,1->3,1->6,1->7,2->4,3->4,4->5,5->6,5->7};
vcr={1-> {2,0},2-> {1,1},3-> {1,-1},4-> {0,0},5-> {4,0},6-> {3,1},7-> {3,-1}};
GraphPlot[gr,VertexLabeling-> True,
DirectedEdges-> False,
VertexCoordinateRules-> vcr,
ImageSize-> 250]
Run Code Online (Sandbox Code Playgroud)
方法2(解决方法)
erf= (If[MemberQ[{{5,4}},#2],
{ },
{Blue,Line[#1]}
]&);
gp[1] =
GraphPlot[
Join[{5->4},gr],
VertexLabeling->True,
DirectedEdges->False,
VertexCoordinateRules->vcr,
EdgeRenderingFunction->erf,
MultiedgeStyle->.8,
ImageSize->250
]
Run Code Online (Sandbox Code Playgroud) 我正在寻找有效地找到边缘上的点的方法,该点是与其他点最接近的点.
假设我知道两个点是边的顶点.我可以计算穿过这些点的线的方程.
计算边缘上的点的最佳方法是什么,该点是平面中某个其他点的最近点.
我会发布一张图片,但我没有足够的声望点.
假设我有150个节点/顶点的路径.如果是这样,我怎么能简化,例如一条带有3个顶点的直线,将删除中间的一条,因为它不会添加到路径中.我怎么能避免破坏尖角?我怎样才能消除微小的变化并保持平滑的曲线.
谢谢
如何计算两个矩形之间的最小距离?
对于没有角度(即0一度)的矩形来说很容易,但对于任何不同角度的旋转矩形我都不知道该怎么做.
你能推荐一下吗?
WhiteFlare
我有一个定义有起点和终点的线段:
A:
x1 = 10.7196405787775
y1 = 59.9050401935882
B:
x2 = 10.7109989561813
y2 = 59.9018650448204
Run Code Online (Sandbox Code Playgroud)
其中x定义经度,y定义纬度。
我也有一点:
P:
x0 = 10.6542116666667
y0 = 59.429105
Run Code Online (Sandbox Code Playgroud)
如何计算线段和点之间的最短距离?我知道如何在笛卡尔坐标中执行此操作,但在长/纬度坐标中却不行。
在我的C#(.NET 2)应用程序中,我想确定哪个控件是鼠标的壁橱.
我可以想到一些方法,这样做不会很正常.我可以使用该Control.Location属性,但这只是给我上/下,鼠标可能在控件的另一侧.我可以计算一个控件的中心点,但是大的控件会使这个偏斜(靠近控件的边缘计算为接近控件).
所以基本上我在画布上有一堆矩形和一个点.我需要找到离点最近的矩形.
(理想情况下,我也想知道点和矩形之间的距离).
有任何想法吗?
给定不规则多边形和该多边形内的点,如何确定多边形中哪条边最接近该点?

我可能必须对多边形内的一大组点(例如50-200点)运行此计算.
可能重复:
如何确定点是否在某一线附近?
//Returns the point on the line traced from start to end which
//comes nearest to 500,000, 500,000. The points are scaled between
//1,000,000 and 0 from their original fp types.
Point closestToCentre(Point start, Point end);
Run Code Online (Sandbox Code Playgroud)
有人知道比单步穿过像素更快的方法吗?
能不能比我更警觉地证明他们的数学和几何能力了吗?
_______编辑___________
谢谢Kris,这让我感到困惑:
[X; -a/BX-C/B] = [0; -c/B] - 1/B [-b; 斧头.
现在我看到它只是将矢量(主要是y分量)分成两个,它们组合起来产生相同的结果.得到旧的部分分数脑细胞兴奋一分钟然后:)
_______编辑_________
杰森摩尔,感谢你的灵感,这就是我正在做的,从图形上看,

我希望这更清楚.
____编辑________
所以我可以合理地期望在我的采样线上采取直角线并从中心运行它但是如何判断它们何时触摸?

我认为克里斯的方程式页面是要走的路.如果你们都告诉我这是一个两步的过程.现在只是两个联立方程,所以我可能不需要Kris的推导.
____编辑_________
无论好坏,我不知道,但作为搜索引擎的stackoverflow之美已向我揭示了几条调查路线.首先,我喜欢这里的第一个解决方案: 点和线段之间的最短距离.
但为了向我自己证明这一点,我需要matti的解决方案在底部(但是一个)的链接:
http://www.topcoder.com/tc?d1=tutorials&d2=geometry1&module=Static
推导是如此简单和优雅,即使我可以遵循它!
鉴于http://mathworld.wolfram.com/Point-LineDistance2-Dimensional.html
由于get请求中有2048个字符的限制,因此您无法使用包含具有大量多边形点的多边形的Google Static Maps生成图像.
特别是如果您尝试在一张地图上绘制许多复杂的多边形.如果你使用谷歌地图API,你将没有问题 - 它运作良好!但我想要一个图像(jpg或png)......
那么,有没有机会从Google Maps API创建图像?或者任何"欺骗"2048 char限制的方式?
谢谢!
A我在 R3 空间中有一个由最小向量和 最大向量定义的轴对齐边界框,以及由具有端点和和半径的B线段定义的胶囊。我想检查这两个形状是否相交。abr
我知道如果胶囊的定义线段与 AABB 相交,这两个形状实际上会相交。然而,我该如何处理剩余的情况,其中线段不与 AABB 相交,但胶囊仍然与 AABB 相交。