2線の交点を座標値で求める式で、0での除算が発生しない方法を教えて下さい。

座標
線a ax1 = 0 , ay1 = 0 : ax2 = 12 , ay2 = 13
線b bx1 = 6 , by1 = 15: bx2 = 6 , by2 = 2

A=(y13-y0)/(x12-x0)
B=(y2-y15)/(x6-x6) 0で除算が発生

X=(A*x0-y0-B*x2+y15)/(A-B)
Y={A*y15-B*Y0+AB*(x0-x2)}/(A-B)

片方の線が垂直だと0で除算が発生してしまいます。

このQ&Aに関連する最新のQ&A

外積 意味」に関するQ&A: 内積、外積の意味

A 回答 (3件)

d = (ax1-ax2)(by2-by1)-(bx1-bx2)(ay2-ay1)


x = {(bx1by2-bx2by1)(ax1-ax2)-(ax1ay2-ax2ay1)(bx1-bx2)}/d
y = {(ax1ay2-ax2ay1)(by2-by1)-(bx1by2-bx2by1)(ay2-ay1)}/d
です。

●準備:交点を求めようと言うのですから、
(1)「(ax1,ay1),(ax2,ay2) が(点ではなく)直線であり、(bx1,by1),(bx2,by2) が直線である」つまり
(ax1 ≠ ax2 または ay1 ≠a y2)でありしかも(bx1 ≠ bx2 または by1 ≠b y2)
でなくては話にならない。さらにまた、
(2) これら2本の線が平行であっても意味がありません。

以上の条件(1)(2)は、実はベクトル<(ax1-ax2),(ay2-ay1)>と<(bx1-bx2),(by2-by1)>との外積dが0ではない、ということ、言い換えれば
d = (ax1-ax2)(by2-by1)-(bx1-bx2)(ay2-ay1)
が0でない、という事と等価です。

●次に、2本の直線の方程式は
(ay2-ay1) x + (ax1-ax2) y = (ax1ay2-ax2ay1)
(by2-by1) x + (bx1-bx2) y = (bx1by2-bx2by1)
と書くことが出来ます。これを解くと
x = {(bx1by2-bx2by1)(ax1-ax2)-(ax1ay2-ax2ay1)(bx1-bx2)}/d
y = {(ax1ay2-ax2ay1)(by2-by1)-(bx1by2-bx2by1)(ay2-ay1)}/d
です。(1)(2)の条件さえ満たしていれば、必ずd ≠0ですから、0によるわり算は生じません。

●なお、以上は行列を使った計算(線形代数)の基本を普通の数式に書き直したものです。もしかしたらCG用のプログラムを自作していらっしゃるのかな?線形代数を学んでおくととても便利ですよ。
    • good
    • 0
この回答へのお礼

毎度お世話様です。

実に解かり易い回答有り難うございます。
現在、CADを組んでおりまして条件処理を行えばなんとかなるのですが
デバックの際ややこしくなって困っていました。

将来は、CGの方にも進むつもりです。
線形代数ですか、今度調べてみます。

又、質問しますのでよろしくお願いします。

お礼日時:2001/01/17 20:42

 lible_ioさん、前回の続きですか?


 解決方法は簡単、簡単。傾きを求める前に、線a、線bにおいてx座標をチェックするだけです。ちなみに、もし等しければ求める交点のx座標はその値で決まりです。例えば、次のようにすればいかがですか?

 if (ax1==ay1)
 {
  if (bx1==bx2)
  {
   交点なしの処理
  }
  else
  {
   X=ax1
   Yを求める処理
  }
 }
 else
 {
  if (bx1==bx2)
  {
   X=bx1
   Yを求める処理
  }
  else
  {
   Aを求める処理
   Bを求める処理
   if (A==B)
   {
    交点なしの処理
   }
   else
   {
    通常の方法でX,Yを求める処理
   }
  }
 }

 見落としがあるかもしれません。ご自分でも、よく考えてみてくださいね。
    • good
    • 0
この回答へのお礼

毎度お世話様です。

条件分岐で処理をして見たのですが、式の中で線角度が必ず必要になるため
計算結果が正しく出ない事があり、デバックもややこしいため別の式がないか
質問してみました。

stomachmanの回答でOKのようです。
又、お願いします。

お礼日時:2001/01/17 20:43

これは、直線の式を


 y=ax+b
としてそれぞれの傾きaを求めているのですね。
この y=ax+b という式が、すでにx軸に垂直な直線に対応していません。
(yの係数を0にすることが出来ませんね。)
より一般的には、まず最初に
 ax+by+c=0
で平面上での直線をあらわしておきましょう。

質問の数値を用いて具体的に計算してみます。
 直線A:ax+by+c=0
 直線B:a'x+b'y+c'=0
として、数値を代入すると
直線Aに対して
 c=0       …(1)
 12a+13b+c=0   …(2)
という連立方程式を得ます。
また、直線Bに対して
 6a'+2b'+c'=0  …(3)
 6a'+15b'+c'=0  …(4)
という連立方程式を得ます。
それぞれ文字数3に対して式が2つしかないので a,b,c 等の値は
1つには決まりませんが比を求めることが出来ます。
最も簡単な整数比を用いると
式(1)、(2)から
 a:b:c=13:-12:0
式(3)、(4)から
 a':b':c'=1:0:-6
となります。つまり、
 直線A:13x-12y=0
 直線B:x-6=0
となります。
よって、交点は (x,y)=(6,13/2) と求まります。
    • good
    • 0
この回答へのお礼

回答有り難うございました。
解かり易い回答なのですが、プログラムの中でそのまま使える式を
期待していました。

怠け者で、すみません。
又、質問しますのでよろしくお願いします。

お礼日時:2001/01/17 20:44

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qイラストレーターでのダブル、シングルトンボについて

広告制作の仕事をしています。
トンボにはダブルトンボやシングルトンボと呼ばれるものが
あるのは知っていたのですが
ずっとあまり気にせずトンボはトンボとして
普通にトリムマークで作るトンボを使用していました。

ダブルトンボとシングルトンボはどういうものか。
どういった時に、どういう為に使うものなのか。
また、そのトンボの付け方など教えていただけないでしょうか。
色々サイトで調べても どうもうまく理解できなくて…
どなたかご存知の方がいらっしゃいましたら教えて頂きたいです
宜しくお願い致します!

Aベストアンサー

>いつも使っているトリムマークで付けるトンボが
>ダブルトンボという事になるのでしょうか?

Illustratorで 「日本式トンボ」が ダブルトンボとなります。

>シングルトンボはオフセット輪転機の場合に付けるトンボの種類

 いえいえ、オフセット輪転機で「オフ輪サイズ」という「必ず白フチがつく」サイズがありますが
 その場合にのみ使います。 
 
 オフセット輪転でも白フチがつかない「4方断裁」する場合はダブルトンボを使います。

Qx1=(1,1,1),x2=(1,1,-1),x3=(1,-1,-1)をC^3の基底,{y1,y2,y3}がその双対基底でx=(0,1,0)の時,y1(x),y

[問] ベクトルx1=(1,1,1),x2=(1,1,-1),x3=(1,-1,-1)をC^3の基底とする。
{y1,y2,y3}がその双対基底でx=(0,1,0)の時、
y1(x),y2(x),y3(x)を求めよ。

という問題の解き方をお教え下さい。

双対基底とは
{f;fはF線形空間VからFへの線形写像}
という集合(これをV*と置く)において、
V(dimV=nとする)の一組基底を{v1,v2,…,vn}とすると
fi(vj)=δij(:クロネッカーのデルタ)で定めるV*の部分集合
{f1,f2,…,fn}はV*の基底となる。これを{v1,v2,…,vn}の双対基底と呼ぶ。

まず、
C^3の次元は6(C^3の基底は(1,0,0),(0,1,0),(0,0,1),(i,0,0),(0,i,0),(0,0,i))
だと思うので上記のx1,x2,x3は基底として不足してると思うのです(もう3ベクトル必要?)。

うーん、どのようにしたらいいのでしょうか?

Aベストアンサー

>C^3の次元は6(

これが間違え.
「x1=(1,1,1),x2=(1,1,-1),x3=(1,-1,-1)をC^3の基底」
といってるんだから,係数体はRではなく,C.

あとは定義にしたがって,
dualな基底を書き下せばいいだけ.
y1(x1)=1,y1(x2)=y1(x3)=0であって
v=ax1+bx2+cx2と表わせるわけだし,
v=(v1,v2,v3)とすれば,a,b,cはv1,v2,v3で表現できる
#単なる基底変換の問題.

Qイラレで画像のトンボの作り方を教えて下さい

最近、スクリーン印刷用のイラレファイルを作る機会ありまして、
普通にCS3でクリエイトトリムでトンボを配置し、入稿したところ、
「こんな意味無いトンボいりません」と職人さんに怒られました。
そして「このようにトンボつけて」とシルクスクリーン印刷の職人さんから
画像が送られてきたので、イラレCS3のメニューを探しましたが、
画像のトンボ作成メニューは見つかりませんでした。
仕方なく手作業で配置し再入稿した次第です。
このトンボは、見当トンボと言われるものなのでしょうか?
職人さんは、画像のトンボをイラレで普通に作成されているようです。
イラレでこのトンボをメニューからワンタッチで作成できるのでしょうか?
ご教授、宜しくお願い致します。

Aベストアンサー

#1です。
別に転写紙だって印刷業界には違いはないわけで・・・
転写シールのように鏡像だろうとトンボの描き方は印刷のルールですから変わりようがないんです。
(#2さんのおっしゃる「シングルトンボ」はルールとして存在します)
私自身、四半世紀は印刷業界(アナログ時代を含めて)に係わっていますが、こんなものを「トンボ」と言っている方にあったことがありません。

どうしてこんな風なものになってしまっているのかは全く不明ですし、どうやって付けているのかも不明です。
一応クリエイト>>トリムマークで作成した角トンボを各角(すみ)ごとのセットを個別に「ダイレクト選択ツール」で選択して中心点で180度回転すれば出来なくはないですが、なんの意味があるか全く不明です。

昔はトンボはカラス口で書いたり、シールでぺたぺた貼っていたのでその時に覚え間違えたとか?でしょうか・・・

Q材料力学(数学)の問題です。 0<x<bでy=ax、b<x<2bでy=ab、2b<x<3bでy=-a

材料力学(数学)の問題です。

0<x<bでy=ax、b<x<2bでy=ab、2b<x<3bでy=-ax+3abである関数のグラフを描け。a、bは正の定数とする。
この問題の解き方を教えて下さい。わかりやすく解説してくだされば有難いです。

Aベストアンサー

0<x<bでy=ax
これは単なる比例です。aが正の定数なので、0を通る右上がりの直線ですね。

b<x<2bでy=ab
a,bが定数なので、abも定数です。
x=bの時「y=ax」=「y=ab」であるので、
y=axのx=bにおけるyから横一直線ですね。

2b<x<3bでy=-ax+3ab
これは最初の比例のグラフと傾きが正負逆になっていますね。
x=2bの時y=-2ab+3ab=ab、
x=3bの時y=-3ab+3ab=0
となる右下がりの直線ですね。

x=0,b,2b,3bは範囲外となります。
グラフを描く時に境界部分で○とするか●とするか間違わないように。

Qトンボについて

京都府宇治市の者です。
先日、九月の初めにスーパーの駐車場で車の中に居たら窓に何度もトンボが寄ってきました。
 水とガラスを間違えたのか、産卵か交尾の行動をしていました。
そのトンボについての質問ですが、胸以下が赤色系で頭部はパステル調の緑色でした。
 その美しさに暫く見とれていたのですが、後で調べても中々何と云う名前のトンボだったのか判りません。
 アカネ(アキアカネ)に近いのですが、情報から大きさが大きすぎる様に思います。
 大きさは、オニヤンマ等の大型と赤トンボ等の小型の中間位で、シオカラトンボより一回り大きく思いました。
 兎も角、赤と緑の色調が美しいトンボでした。

この程度の情報で絞れるトンボは何トンボでしょうか?

Aベストアンサー

「カオジロトンボ」では?
    ↓
 http://www.jomon.ne.jp/~tomboy/page004.html#カオジロ2
(スクロールして、他の「カオジロ」も見てください。)

ただ、「北方系」のトンボらしいので、京都に現れるか疑問ですが。
紹介した写真のサイト、かなり詳しくトンボの絵が見られますので、
一度、すべてご覧ください。

・・・このトンボ、私も知りませんでした。

Q線形です (1)を x+3y-2z=0 x-2y+4z=0 x^2+y^2+z^2=1をもちいて 答

線形です
(1)を
x+3y-2z=0
x-2y+4z=0
x^2+y^2+z^2=1をもちいて
答えが+-の答えになりました
(2)では外せきが8,-6,-5となり
おおきさの5ルート5で割ると
+-の答えにはなりませんでした
どちらが正しいのでしょうか?

Aベストアンサー

外積からでてきた単位べクトルは、外積の定義から、ベクトルa、bに垂直ですよね。
だからそれと正反対のベクトルも、ベクトルa、bに垂直な単位ベクトルだから、これも答えに入れれば
よいのです。つまり外積から出した単位ベクトルの各成分に(-1)をかけた成分のベクトルも答えに
なります。そしてこうして出した2つのベクトルは、先に内積で出した2つのベクトルと一致します。

Qイラレ:最近のトンボの作り方

私は、イラレでトンボを作るとき、実サイズより少し大きめにアートボードを設定して、その中に実サイズのトンボを制作していました。

例:A4を作るときの手順
230 x 320のアートボードを設定
その中に210 x 297の四角形を作りトリムマークを作成

この様に作成をしていました。

しかし、先日、ある知り合いに「君のトンボの作り方は古い、最近はアートボード自体を210 x 297に設定をする」と言われました。
そこで、さっそく作ってみたのですが、プリントする時にアートボードの内側しかプリントされないので、どうやってもトンボが印刷されません。

例:210 x 297のアートボードに210 x 297のトンボを付けるとアートボードの外にトンボが表示されます。しかし印刷範囲はアートボード内なので外側のトンボが表示されない。

プリントの画面で「アートボードを無視」というチェック項目がありますが、これをするとアートボードを実サイズにした意味がないのではないかと思います。

この人にはなかなか会う機会がないのでここで質問させていただきます。

みなさんはどの様にトンボを作っていますか?

よろしくお願いします。

私は、イラレでトンボを作るとき、実サイズより少し大きめにアートボードを設定して、その中に実サイズのトンボを制作していました。

例:A4を作るときの手順
230 x 320のアートボードを設定
その中に210 x 297の四角形を作りトリムマークを作成

この様に作成をしていました。

しかし、先日、ある知り合いに「君のトンボの作り方は古い、最近はアートボード自体を210 x 297に設定をする」と言われました。
そこで、さっそく作ってみたのですが、プリントする時にアートボードの内側しかプリントされないので...続きを読む

Aベストアンサー

ご質問は
どうやってトンボを印刷するかですよね。

アートボードは仕上がりサイズで作成して下さい。

「プリント...」で開くダイアログで
左側にある「トンボと裁ち落とし」というのをクリックして下さい。
「トンボ」の所でチェックを入れて
(私は通常トンボとレジストレーションマークの2つのチェックで使ってます)

裁ち落としがある場合は、
「裁ち落とし」の所で数値を入力
通常は3mmでしょうか。
それから、
※重要→プリント...のトンボを使わず、作成したトリムマークをプリントしたい場合、ここの数値を20mmとか大きめに入力しておけばOK。
(要はアートボードより外側どれ位の範囲をプリントしますかってことなので)

仕上がりより大きいサイズの用紙を指定して

プリント。

Qx*y=log(e^x+e^y)と定義すると、(x*y)+z=(x+z)*(y+z)

x、y∈Rに対して
x*y=log(e^x+e^y)
と定義すると、
(x*y)+z=(x+z)*(y+z)
が成り立ちます。
分配法則の*と+を逆にしたような感じですが、この*から何かしらの代数的な事実が従うのでしょうか?
この*の意味は何なのでしょうか?

x*x=aのとき、x=√aと定めと、
√(a*b)≧(a+b)/2
といった相加相乗平均の関係の類似は成り立つようですが。

Aベストアンサー

e^x=X, e^y=Y, e^z=Z と置いて考えましょう。
e^(x*y)=e^x+e^y → Z=X+Y
e^(x+y)=e^x*e^y → Z=X*Y
つまり、正の数の加算と乗算になります。

>分配法則の*と+を逆にしたような感じですが

まさにその通りです。入れ替えて見てください。

>√(a*b)≧(a+b)/2

通常の相加相乗平均とは逆ですね。

Qトンボは、目を回してしまうのですか?。

トンボをつかまえる時、指を回しながら、トンボの目に近づけていく方法があります。トンボは、目回っているんでしょうか?。
乗り物酔いがひどいわたしは、トンボより先に目が回ってしまいそうです。少し気持ち悪くなってきました・・・。

Aベストアンサー

 こんばんは! gingakeiさん。
そうですね、あれは目が回っていると言うよりは、指の動きをじっと見てるといった方が当たっているかもしれません。ぐるぐる回しながら近づくと必ず小首をかしげて指の動きに全神経を集中させます。私も子供の頃に指を回しながらトンボを捕まえる少年でした。網で捕獲するのではなく指で捕まえるのですからそれはそれは気分が高揚します。でもライオンの狩りではありませんが、成功率は2~3割といったところでした。難しいのは止まったトンボに近づくまででした。止まっているトンボに接近できたら捕獲成功率ほぼ8~9割。小首を傾げたら捕獲成功率はほぼ100%でした(この小首をかしげるシーンが「目を回した」と勘違いさせる原因だったのでしょう)。でもトンボもさるもの引っ掻くもの、なかなかそこまでの接近戦に持ち込ませてくれないのですよ。
 少年時代の憧れのトンボは、オニヤンマでした。ギンヤンマは何とか捕獲できても、オニヤンマはなかなか…。(あ、私、ご質問とは関係のないことを…(^_^;))
いつもいつもgingakeiさんのご質問のお陰で童心に戻れます。失礼致しました。

 こんばんは! gingakeiさん。
そうですね、あれは目が回っていると言うよりは、指の動きをじっと見てるといった方が当たっているかもしれません。ぐるぐる回しながら近づくと必ず小首をかしげて指の動きに全神経を集中させます。私も子供の頃に指を回しながらトンボを捕まえる少年でした。網で捕獲するのではなく指で捕まえるのですからそれはそれは気分が高揚します。でもライオンの狩りではありませんが、成功率は2~3割といったところでした。難しいのは止まったトンボに近づくまででした。止まっている...続きを読む

Qy=-a(a+b)t+b*exp(-(a+b)t) (a>0,b>0)

y=-a(a+b)t+b*exp(-(a+b)t) (a>0,b>0)

yがある値をとる時のt(t>0)を算出したいのですが、
上記の式をt=・・・の式にすることはできるでしょうか?
実際にtを算出する時にはa,bに数値を当てはめて計算を行うのですが、
a,bの値を変えた場合のtも求めたいので、文字係数のままで式を変換したいのです。

どなたか解る方がいらっしゃいましたら、解答お願いいたします。


補足
上記の式は以下の式と単純化したものです。
もしできるならば、こちらの式でt=・・・にしていただけると助かります。

d-(c*b^2)/(a+b)^2-abct/(a+b)+((c*b^2)/(a+b)^2)*exp(-(a+b)t)=0
(a>0,b>0,c>0,d>0)

-a(a+b)t+b*exp(-(a+b)t)=b-(d*(a+b)^2)/bc
b-(d*(a+b)^2)/bc=y と置いて単純化しています。

計算ミス等ありましたらご指摘下さい。

Aベストアンサー

老婆心ながらシミュレーションなら、近似値ということでこういう方法で簡単に計算できますよ^w^
まぁ、方程式が超幾何方程式なので解は結局電卓をたたくしかないので近似値というとこに気を使う必要はないでしょう。


元の式が

s = y-a*t
s = b*exp(-ct)

という連立方程式にyを代入したうえでの解になることは述べました。ここで少し変数をいじって

s1(t) = y-a*t
s2(t) = b*exp(-ct)

と置きます。

s1(t)-s2(t)

を縦軸に、横軸をtとして絵画します。そのときt軸と曲線が交わるところが解です。
当たり前っちゃその通りですがw

グラフを書かないシミュレーション的な方法としては、t=n×Tという書き方に変えて、nがステップ、Tがステップ幅とみて
(s1(n×T)-s2(n×T))×(s1((n-1)×T)-s2((n-1)×T))<0
となるnを探し出すという手法でそのnをtに戻して導くという方法がシンプルでいいでしょう。


人気Q&Aランキング