もう一つの共線点問題。これは私が整数演算を使用していて、正確にの共線性を探していて、曖昧なイプシロンベースのテストではありません。Z^2で3点が正確に同一線上にあるかどうかを調べる方法
インラインアセンブリでは、私は正確な答えを得ることができます:x86の乗算命令をクロス積を計算する際に重要で、どちらも製品のハイとローの部分、両方へのアクセスを提供します(X - ) x(b-);私は単純に2つの半分を一緒にORしてゼロをテストすることができます。しかし、私はそれはだ、Cでそれを行う方法があります願っています:
- オーバーフロー防止大体そのためです。そして、あると同時に、それを行うための方法で/しない:
- は大きな整数型を使用することを含む
- は、偽陽性または偽陰性のいずれかを生じます。
double
にキャスト関与 - 私はすでにのために利用できる最大の整数型を使用していることを前提としてい私の座標成分タイプ私はXは、セグメントABを超えているかどうかについては、この問題の心配はありませんよ。それはちょうど4つの無益な比較です。
私の悪夢のシナリオは、各座標コンポーネントを2つの半分に分割し、明示的に長時間の乗算をしなければならないということです。部分積の上位半分をすべて追跡できるようにします。 (。そしてアドオンで持ち運び明示的に行うために持つ)
クロス積はn次元に一般化されますか? –
あなたのタイトルにはZ^nが書かれていますが、あなたの質問のテキストには、n = 3(またはn = 2、n = 3、z = 0として扱う)一般的な解決策を探しているのか、n = 3の解決策だけを探しているのかを明確にすることはできますか?なぜなら、n = 2またはn = 3のアプローチは(2つまたは3つの要素の重なり部分の重なりに沿った共線性を調べることによって)任意の次元に容易に一般化できるからである。 – ruakh
@OliCharlesworth - [はい、でも( 'n-1')の通常の操作です](http://en.wikipedia.org/wiki/Cross_product#Multilinear_algebra)。 –