質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.36%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Q&A

解決済

1回答

354閲覧

3D空間でねじれた2直線で、直線間が指定した距離になった時の座標を求める事は可能でしょうか?

s_yossun

総合スコア15

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

0グッド

0クリップ

投稿2024/08/06 05:49

編集2024/08/06 06:37

実現したいこと

3D空間で平行でも交わる事もないねじれた2直線で、直線間が指定した距離になった時の直線上の座標を求める事は可能でしょうか?その方法を教えていただきたいです。

発生している問題・分からないこと

交わる事がある2直線であれば、内積や三角関数で指定した距離になった時の斜辺の長さ等を求める事はできるのですが、2直線がねじれた時から頭がパニックです。

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

googleで検索するとねじれた2直線間の最短距離を求める方法はたくさん出てきました。

補足

Unityを使用して試しております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fiveHundred

2024/08/06 05:53 編集

> googleで検索するとねじれた2直線間の最短距離を求める方法はたくさん出てきました。 であれば、その方法をC#で書き直せばいいだけだと思いますが、どこで困っているのですか?
fiveHundred

2024/08/06 05:57

というか、そもそも何でこれが必要になったのですか? Unityであれば、CapsuleColliderを使えばいいと思うのですが。
s_yossun

2024/08/06 05:58

分かりにくい文章ですみません。 2直線間の最短距離を求めたいのではなく、2直線間が指定した距離になった時の直線上の座標を求めたいのです。
s_yossun

2024/08/06 06:01

Unityであればある程度の当たり判定はやってくれる見たいですが、まぁ勉強というか色々試してみたくって。
fiveHundred

2024/08/06 06:10

そうであれば、Unityというよりかは数学的な問題ですので、「C#」や「Unity」ではなく「アルゴリズム」といった適切なタグにしたほうがいいと思います。 現状では、C#とUnity以外の人からは、関係ないという判断でスルーされる可能性が高いです(タグ絞り込みという機能の影響もあります)。
yambejp

2024/08/06 06:19

2つのねじれの直線(L,M)間の最短距離となる線分NはLとN、MとNがそれぞれ直角に交わるので、長さとと座標がでれば、L上の特定ポイントからのMへの距離はNを使った直角三角形の斜辺ですね。2直線長さと直角がわかっているのでもう1直線の長さもわかるので、最大4座標が計算できそうですが
s_yossun

2024/08/06 06:36

fiveHndredさん、すみません。以後気をつけます。 yambejpさん、ありがとうございます。 最短距離の線分は2直線ともに直角なのですね、それを使えば内積や三角関数が使えそうです。
fana

2024/08/07 04:46

速やかに終了しちゃってますが… > 2直線間が指定した距離になった時の直線上の座標 この言葉が実際に指す物次第では,回答内容は全然ダメ(=大間違い)な気がしています. →回答のコメント欄の方をご確認願いたく.
guest

回答1

0

ベストアンサー

2直線

の定義というのが具体的にどのように与えられるのかわかりませんが……
二つの直線を「直線1」「直線2」と呼ぶとき,

直線間が指定した距離になった時の直線上の座標

というのを,
「直線1上の座標であって,直線2までの距離が指定の距離になる位置」
みたいな話だと解釈しました.


既にコメントされているように
直線1上で最も直線2に近い位置 と 直線2上で最も直線1に近い位置 とを結ぶ線分 N というのは両直線に直交しているハズです.

そしたら,この N (に沿う方向)を法線とする平面を適当に考えてやり,両直線のこの平面への投影を考えてやれば良いのではないでしょうか.
この平面上への N の投影結果というのは点になり,それは両投影直線の交点となるので,これは解けるでしょう.(2次元の問題なので)
この交点が得られたら,元の3次元の世界に戻してやればいいです.

どうやって戻すか?
別どうやってもいいと思いますが……
例えば直線上の2点{ A, B }というのを考えてやるとすれば
Aから交点までの距離 と B から交点までの距離 との比 は投影前後で同一だ」とかそういうので.

これで N が具体的に求まったら,「特定の距離になる座標」というのは求められますよね.
(線分 N の一方の端点を直線に沿ってスライドさせるようなことをイメージすればよい.
スライドしていくと線分の長さが増えていくが,所望の長さになるにはどれだけスライドすれば良いのか? っていう.)

投稿2024/08/06 07:04

編集2024/08/06 07:21
fana

総合スコア11980

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2024/08/06 07:16

言うまでも無く, N の長さが所望の距離より長い場合には 解なし です.
fana

2024/08/07 04:00

なんかBAになってるけども…… 私は一体何を書いているのか? > 「直線1上の座標であって,直線2までの距離が指定の距離になる位置」 っていう話だとしたら,コレ,盛大に間違っている. 「N の直線1側の端点」を直線1に沿って位置Xまでスライドさせたとき, 【そのスライド結果の位置Xから直線2までの距離】ってのは,【Xと「Nの直線2側の端点」との距離】ではない よね. 評価すべきは【Xから直線2に対して下した垂線の長さ】なのに.
fana

2024/08/07 04:41 編集

> 直線2までの距離が指定の距離になる 領域というのは筒状なので,この筒と直線1との交点を求めればいい,ということになるかな. (この間違った回答と同じ様に)直線2を法線とする平面というのを考えてやれば,そこに投影した2次元世界での円と直線の交点の問題を解く感じか. ※もちろん「投影がどうの」言ってるのは概念の話であって,計算的には3次元の世界で「直線2に沿う方向の成分を除去した残り」を扱うということだよ
s_yossun

2024/08/07 07:19

丁寧な説明ありがとうございました! 2つの直線の最短地点どうしを結ぶ直線が各直線と直行するという事がヒントになって解決する事が出来たので、ベストアンサーとさせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問