当前位置: 首页 > 面试题库 >

计算3点(x,y)的曲率

阎令
2023-03-14
问题内容

我有一个二维欧几里德空间。给出了三点。

例如(p2是中间点):

Point2D p1 = new Point2D.Double(177, 289);
Point2D p2 = new Point2D.Double(178, 290);
Point2D p3 = new Point2D.Double(178, 291);

现在,我想计算这三个点的曲率。

double curvature = calculateCurvature(p1, p2, p3);

这该怎么做?是否存在现有方法(没有Java外部库)?

  • 曲率:https : //en.wikipedia.org/wiki/曲率
  • Menger曲率:https: //en.wikipedia.org/wiki/Menger_curvature

问题答案:

对于Menger
Curvature,该公式就在Wikipedia文章中:

curvature = 4*triangleArea/(sideLength1*sideLength2*sideLength3)

您到底尝试了哪个代码?

给定3分,计算这4个值应该并不难。

以下是一些有用的方法:

/**
 * Returns twice the signed area of the triangle a-b-c.
 * @param a first point
 * @param b second point
 * @param c third point
 * @return twice the signed area of the triangle a-b-c
 */
public static double area2(Point2D a, Point2D b, Point2D c) {
    return (b.x-a.x)*(c.y-a.y) - (b.y-a.y)*(c.x-a.x);
}

/**
 * Returns the Euclidean distance between this point and that point.
 * @param that the other point
 * @return the Euclidean distance between this point and that point
 */
public double distanceTo(Point2D that) {
    double dx = this.x - that.x;
    double dy = this.y - that.y;
    return Math.sqrt(dx*dx + dy*dy);
}

没有更多的事情要做。警告:area2根据点的方向(顺时针或逆时针)返回带符号的双精度型。



 类似资料:
  • 如何评估像3/2%2这样的东西? 在解决以下问题时卡住了: 我的工作: 第一次执行 int k=12/2,k=6 6%2返回0,所以6%2!=0的计算结果为false,n=0 第二次执行 k=6/2,k=3 3%2返回1,因此3%2!=0的计算结果为真,n=1 第三次执行 k=3/2,k=1.5 1.5%2。。。不确定如何评估并继续? 谢谢

  • 问题内容: 使用math.pow或**运算符哪个更有效?我什么时候应该使用另一个? 到目前为止,我知道可以返回一个或一个,如果您使用小数,该函数将返回一个浮点数 问题答案: 使用Power运算符将更快,因为它不会产生函数调用的开销。如果您反汇编Python代码,则可以看到以下内容: 请注意,我在这里使用变量作为指数,因为类似常数的表达式实际上是在编译时求值的。 现在,实际上,这种差异并不重要,正如

  • X|Y

    描述 (Description) 逻辑运算符[X|Y]匹配X或Y. 例子 (Example) 以下示例显示了逻辑运算符的用法。 package com.wenjiangs; import java.util.regex.Matcher; import java.util.regex.Pattern; public class LogicalOperatorDemo { private sta

  • 我有以下例外: WebDriverException:不能在点(1057.38330078125,673.13330078125)点击元素。其他元素将收到单击: 按钮id=“id4b6a687af6934e35b6f355f6305dc481”data-layout=“hbox”class=“hux-ui-button”type=“button”role=“button”> 硒=2.49。

  • 问题内容: 考虑以下示例: 我不确定Java语言规范中是否有一项规定要加载变量的先前值以便与右侧()进行比较,该变量应按照方括号内的顺序进行计算。 为什么第一个表达式求值,而第二个表达式求值?我本来希望先被评估,然后再与自身()比较并返回。 这个问题与Java表达式中子表达式的求值顺序不同,因为这里绝对不是“子表达式”。需要 加载 它以进行比较,而不是对其进行“评估”。这个问题是特定于Java的,

  • 实际上,我试图增加PDPage对象的cropbox。好吧,没有挑战。但页面内容仍保留在CropBox的左下角。我要它集中在新的cropbox空间。 我知道所有的内容是绝对定位在PDF。所以我的问题是:有没有一种方法使用PDFBox来翻译我的PDPage的原点(x,y)或者内容元素? 问候 汉斯