マンガでよめる痔のこと・薬のこと

<楕円>
原点座標:(DX,DY)
X軸の半径:a
Y軸の半径:b
 角度:なし
<直線>
始点座標:(SX,SY)
終点座標:(EX,EY)

 この2つの図形が交わるかどうか、また交わる場合にはその交点の座標を知りたいのです。
 「楕円の方程式」「直線の方程式」「解の公式」を使用して手で計算することはできるのですが、
計算式として表すことができません。(中学レベル程度の知識なので・・・)
EXCELで数式を設定したいので、上の変数名を使用した具体的な計算式を教えていただければありがたいです。
よろしくお願いいたします。

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

A 回答 (7件)

手で計算できるなら、Excelで計算することは十分可能と思われますが・・・


ポイントは、解の式を、いきなり与えられた文字で表そうとするのではなく、
・線分の式の係数
・線分の式を楕円の式に代入してできる2次方程式の係数
をそれぞれ算出するようにすれば、無理はないのではないでしょうか?

具体的には、
線分の式をy=mx+nとすれば、m=(EY-SY)/(EX-SX), n=SY-m*SX
楕円に代入すると、(x-DX)^2/a^2+(mx+n-DY)^2/b^2=1
これを整理して、px^2-2qx+r=0とすれば、
p=(1/a^2)+(m^2/b^2)
q=(DX/a^2)+((DY-n)/b^2)
r=(DX^2/a^2)+((DY-n)^2/b^2)-1
解は、x=(q±√(q^2-pr))/p

このm,n,p,q,r,(2つの)xをEXCELで書くのはなんとでもなりませんか?
あとは、SX<=x<=EXに含まれるかを判定すればよいでしょう。
もちろん、q^2-pr<0の場合は、即「交点なし」です。

手で計算するのと、ほんと同じでしょう?

この回答への補足

>ポイントは、解の式を、いきなり与えられた文字で表そうとするのではなく、
その通りですね。いきなり表そうとしていたため、複雑な式になってしまい
途中で分からなくなってしまっていました。
もう一度落ち着いて計算しなおしたらうまくいきました。

ただ私の計算では、q=(m*(DY-n))/b^2-(DX/a^2) になるのですが?
CADを使っていくつかのパターンで検証してみましたがうまくいっている
ようなのですが・・・

補足日時:2002/09/26 11:39
    • good
    • 0

#2の補足について、私が計算間違いをしておりました。

(mの掛け忘れ)

ただし、符号の正負に若干あわなさそうなところもあるような気もしなくもないのですが・・・

計算間違いしたこともあって、すっかり自信なくしてしまっておりますので、すみませんが、符号についてだけ再度ご検討ください。
    • good
    • 0
この回答へのお礼

>計算間違いしたこともあって、すっかり自信なくしてしまっておりますので、
いえいえヒントを与えていただいただけでも助かりました。ありがとうございました。

お礼日時:2002/10/01 13:26

質問者及びNo5さんの指摘のとおりです。



始点座標:(SX,SY) 終点座標:(EX,EY)
2点を通る直線の式は、
y=mx+n ・・(1)
これを(Dx,Dy)で変換すると
(y-Dy)=m(x-Dx)+N ・・(2)
(1)から(2)を引く
Dy=mDx+n-N
n=Sy-mSx
N=mDx+Sy-mSx-Dy=m(Dx-Sx)+(Sy-Dy)
Y=mX+N, N=m(Dx-Sx)+(Sy-Dy)・・(3)
(3)式が座標を楕円の原点にあわせたものです。
X^2+r^2×Y^2 =a^2
X^2+r^2×(mX+N)^2 =a^2
X^2+r^2{m^2X^2+2(mXN)+N^2}=a^2
X^2(1+r^2×m^2)+2X(mNr^2)+(N^2-a^2)=0
ここで、
A=(1+r^2×m^2), B=(mNr^2),C=(N^2-a^2)
と置けば、
AX^2+2BX+C=0 の2次方程式になります。
これを解けば解がでます。
解の判定条件は√(4B^2-4AC)>0
#4は、N=m(Dx-Sx)+(Sy-Dy)=0 の場合です。
以上 補足と訂正まで
    • good
    • 0
この回答へのお礼

確かにこの方法だともっと式がすっきりしますね。
ありがとうございました。
※ただ C=(r^2*N^2-a^2) だと思うのですが、これは単純にr^2がぬけてしまったのでしょう・・・

お礼日時:2002/10/01 13:35

>mmkyさん



#4で、平行移動した座標系(X,Y)を考えたときに、線分の方程式がY=mXにならないのでは?
これだと、線分(またはその延長)が、(DX,DY)を通ることを仮定していることになりませんか?
    • good
    • 0

簡単にすればよいのでは、原点座標:(DX,DY) が複雑にするのですから


X=(x-Dx)Y=(y-Dy)の形にするとX,Yで原点を(0.0)にして考えることが出来ます。これで楕円の式は X^2+r^2×Y^2 =a^2 , r=a/b (1)と簡略化出来ます。一方 直線の方程式は、Y=mX ,m=(EY-SY)/(EX-SX), (2)(No2さんから)mは傾きですので、座標に関係なく -∞<m<+∞ の変数として考えられますね。
(2)を(1)に代入すると X^2+r^2×(mX)^2 =a^2 (3)になります。 これでXが解けますね。X^2=a^2/{1+ (mr)^2} または
X=±a/√{1+ (mr)^2}, これから xとyは x=X+Dx, y=Y+Dy
として交点座標が決まります。
一方、楕円と直線が交わるかどうかは、(判定手段として)Xが実数になることが条件、これから、1+ (mr)^2>0 だから -1<(mr)^2 <+∞ であれば楕円と直線は交わります。
こんな感じですかね。

この回答への補足

直線の方程式は Y=mX+n ではないですか?
楕円の原点を移動させるとなると、この n の部分も同時に変化させなければいけないと思うのですが・・・

補足日時:2002/09/26 11:48
    • good
    • 0

ちょっと追加情報。


アフィン変換について・・
今回の件でどんな変換をするかというと・・
「原点の移動」と「たて横の伸縮」の二つです。
(x',y')=((x-DX)/a,(y-DY)/b)・・・です。
見ての通りの式ですから逆変換は
(x,y)=(ax'+DX,by'+DY)・・・です。

さて、アフィン変換を経て、問題の楕円は半径1の円になることがわかると思います。
そして、始点、終点はそれぞれ(SX',SY')と(EX',EY')です。

交わるかどうかの場合わけは、
原点からのそれぞれの距離で決めます。
・ともに距離1未満ならば交点無し。
・一つが距離1以上、一つが距離1未満であれば交点は一つ。
・ともに距離が1より大きい場合は・・
・・まず、二点がのる直線と原点との距離から考えて、
・・・直線が1より離れている場合、は交点無し。
・・・・距離が1以下の場合は・・ちょっと複雑になりますなぁ・・・・・・

この回答への補足

すみません「アフィン変換」自体が分からないので・・・
ただ、#2の方の回答でうまくいきそうです。
ありがとうございました。

補足日時:2002/09/26 11:44
    • good
    • 0

XY軸にそった楕円っていうことならば・・


それこそ、半径の長さで割り算しちゃって、原点の位置に移動して、
<アフィン変換>・・といっても今回は回転がないですが・・

移動された、線分と半径1の原点を中心とした円との交点を求めてみたらどうでしょう?
その後逆にアフィン変換すれば良いのでは?
    • good
    • 0

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Q2つの楕円の交点の求め方が分かりません。

x軸方向に長径がa、y軸方向に短径がbの楕円を描きます。・・・・(1)
この楕円を、x軸方向にcだけ(ただし、0<c<aとする。)、y軸方向にbだけ平行複写した楕円を描きます。・・・・(2)
(1)と(2)の交点P1、P2を求めたいです。

それぞれの楕円は次の式で表されると思います。
x*x/a/a + y*y/b/b=1 ・・・・(1)
(x-c)*(x-c)/a/a + (y-b)*(y-b)/b/b=1 ・・・・(2)

両式にa*a*b*bを掛け、差を取ると次のようになります。
b*c*(-2*x+c)+a*a*(-2*y+b)=0

これをxについて解くと
x=a*a*(-2*y+b*(1+c^2))/2b/c・・・・(3)
となります。

(3)を(1)に代入して整理すると
4*(a*a+c*c)*y*y -4*a*a*b*(1+c*c)*y +b*b*(a*a*(1+c*c)*(1+c*c)-4*c*c)=0・・・・(4)
---------- ================ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
となります。

(4)のうち、---部をA、===部をB、^^^部をC とすると、解の公式より
y=(-B±√(B*B-4*A*C)/2/A
で解けると思いました。

ためしにa=50, b=30, c=10として計算してみたところ、
√の中が
マイナスとなってしまいます。
つまり、解なし、ということらしいです。

どうやったら交点が求まるのでしょうか。
教えてください。よろしくお願いします。

x軸方向に長径がa、y軸方向に短径がbの楕円を描きます。・・・・(1)
この楕円を、x軸方向にcだけ(ただし、0<c<aとする。)、y軸方向にbだけ平行複写した楕円を描きます。・・・・(2)
(1)と(2)の交点P1、P2を求めたいです。

それぞれの楕円は次の式で表されると思います。
x*x/a/a + y*y/b/b=1 ・・・・(1)
(x-c)*(x-c)/a/a + (y-b)*(y-b)/b/b=1 ・・・・(2)

両式にa*a*b*bを掛け、差を取ると次のようになります。
b*c*(-2*x+c)+a*a*(-2*y+b)=0

これをxについて解くと
x=a*a*(-2*y+b*(1+c^2))/2b/c・...続きを読む

Aベストアンサー

別の解法を。

X=x/a
Y=y/b
C=c/a
とおけば、
X^2 + Y^2 = 1
(X-C)^2 + (Y-1)^2 = 1
となり、計算が簡単になります。

Q直線と傾きのある楕円の交点を求めたい

直線と傾きのある楕円の交点を求めたい

http://www17.ocn.ne.jp/~lite/pro97doc.html#TOP

こちらを参考にさせて頂き、直線と楕円の交点を求める関数を作成しております。
傾きを持たない楕円と直線の交点はこれで求められたのですが、
楕円に傾きがある場合、うまく交点を求められません。
どなたか足りない計算、誤っている箇所等お教え願えないでしょうか。

pt1:線の始点
pt2:線の終点
center:楕円の中心座標
radius:楕円の半径
angle:楕円の角度(傾き)
henpei:楕円の扁平率

'直線の勾配を求める
Dim m As Single = (pt2.Y - pt1.Y) / (pt2.X - pt1.X)

'扁平率(ここはかならず長辺/短編?)
Dim w As Double = henpei / 100

'楕円の傾き(ラジアン)
Dim radian As Single = angle * (Math.PI / 180)

'参考元のaとbの長さを求める?
Dim a1 As Single = center.X'原点Xからの中心Xまでの距離
Dim b1 As Single = center.Y'原点Yからの中心Yまでの距離

Dim A As Double = CDbl((m ^ 2) + (w ^ 2))
Dim B As Double = CDbl(-2 * (m ^ 2) * pt1.X + 2 * m * (pt1.Y - b1) - 2 * a1 * (w ^ 2))
Dim C As Double = CDbl((m ^ 2) * (pt1.X ^ 2) - 2 * m * (pt1.Y - b1) * pt1.X + ((pt1.Y - b1) ^ 2) - (radius * w) ^ 2 + (a1 * w) ^ 2)
Dim D As Double = CDbl((B ^ 2) - (4 * A * C))

'交点無し
If D < 0 Then Return crossPoints

'2点を求める
Dim x1 As Single = CSng((-B + Math.Sqrt(D)) / (2 * A))
Dim y1 As Single = pt1.Y + m * (x1 - pt1.X)
Dim x2 As Single = CSng((-B - Math.Sqrt(D)) / (2 * A))
Dim y2 As Single = pt1.Y + m * (x2 - pt1.X)

直線と傾きのある楕円の交点を求めたい

http://www17.ocn.ne.jp/~lite/pro97doc.html#TOP

こちらを参考にさせて頂き、直線と楕円の交点を求める関数を作成しております。
傾きを持たない楕円と直線の交点はこれで求められたのですが、
楕円に傾きがある場合、うまく交点を求められません。
どなたか足りない計算、誤っている箇所等お教え願えないでしょうか。

pt1:線の始点
pt2:線の終点
center:楕円の中心座標
radius:楕円の半径
angle:楕円の角度(傾き)
henpei:楕円の扁平率

'直線の勾配を求める
...続きを読む

Aベストアンサー

参考にしたサイトの「直線と楕円との交点を求める」解法は、
座標系を回転させ、傾きのない楕円にしてから交点を求めています。

楕円の傾きがθの場合は、
・直線と楕円を-θ回転する。(傾きのない楕円になる)
・交点の座標を求める。
・交点の座標をθ回転する。

回転の計算は、
座標(x,y)のθ回転=(x*cosθ-y*sinθ,x*sinθ+y*cosθ)

Q球面と直線の交点

点P(Px,Py,Pz)から方向ベクトル(x,y,z)にのびた直線が、原点O(0,0,0)、半径rの球の表面と交わる点Qの座標を求めたいのですが、どなたか教えていただけないでしょうか。

O-P-Qの三角形を作ると、辺OPの長さ、辺OQの長さ(=r)と∠OPQの角度は求まるので、余弦定理から辺PQの長さが求まります。
辺PQの長さに方向ベクトル(x,y,z)を掛ければ、ベクトルPQが求まるので、ベクトルOP+ベクトルPQ=ベクトルOQが求まると思うのですが、間違っているでしょうか。

Aベストアンサー

なにやら難しいことをお考えのようですが、以下のようにやれば簡単です。

直線は、(X,Y,Z)=(Px,Py,Pz)+t(x,y,z)と表されるので、直線上の点(X,Y,Z)は、
 X=Px+tx
 Y=Py+ty
 Z=Pz+tz
である。(※)

これを球の方程式X^2+Y^2+Z^2=r^2に代入し、tの2次方程式を解いてtの値(2つ。ただし、接するなら1つ)を求め、※に代入すれば、Qの座標がわかる。

Q楕円と円の交点

楕円と円の交点を求める方法を教えてください。

Aベストアンサー

もう少し付け加えると、交点が二つある、一つある(接点)、交わらない、場合に分けられますね。
いや違う交点が四つ、三つもあるんだった。(恥)
原点の周りに楕円を置き(-a,0)、(a,0)を二焦点とする式を作る。
半径rの円をその周りで動かしてみるというのが一番簡単な解き方でしょう。

Q楕円周囲の座標を求めたい

適当にパラメータを変えると楕円周囲の座標が求められる数式をしりたいのです。
ゲーム開発で使うのですがわからなくて困っています。

Aベストアンサー

(x0,y0)を中心に、長半径,短半径a,bの楕円の式
x=x0+acosθ
y=y0+bsinθ
です。
θを0から2πまで変化させると楕円が描けます。
大きさはa,bを変えるとよいでしょう。
この式は長半径、短半径が水平、垂直です。
斜めに表示するにはまた、座標軸の回転が必要です。
では、

Q線分と楕円が交差する条件

同じカテゴリに度々すみません。
線分と楕円の交差する条件判定も
必要になってしまいました。(最後です)

楕円のデータとしては矩形でもっていて
(px1,py1)-(px2,py2)の長方形の中に収まる楕円です。
その値を(cx - x)^2 / a + (cy - y)^2 / b = 1
へ変換し
http://oshiete1.goo.ne.jp/kotaeru.php3?q=673382
の回答を参考にして内部に線分の端点がある場合の判定はできました。
しかし先端の間に楕円がきた場合はお手上げ状態です。
線分と楕円が交差する条件についてご教授ください。

Aベストアンサー

No.1です。

> d=abs((ay2-ay1) *x1+(ax1-ax2)*y1+(ay1*ax2-ax1*ay2 ))/sqrt((ay2-ay1) ^2+(ax1-ax2)^2)・・・(1)
>  (ax2-ax1)(x1-ax1)+(ay2-ay1)(y1-ay1)>0・・・(2)
>  (ax1-ax2)(x1-ax2)+(ay1-ay2)(y1-ay2)>0・・・(3)
> この 3式の
> x1をx1 / |px2-px1|
> y1をy1 / |py2-py1|
> に置き換えたので宜しいのでしょうか?

それでいいと思います。

他のやり方としては、線分の方程式はtを媒介変数として
x=(ax2-ax1)t+ax1, y(ay2-ay1)t+ay1 (0≦t≦1)
と表せますから、これを楕円の方程式に代入して、
tの解が0から1の範囲にあるかどうかを調べる手もあります。

Q楕円上の点と外部の点の距離

楕円上の点とその外部の定点の距離を求めたいのですが、どうやったらいいのでしょう。言い換えれば、楕円外部のある点と楕円周の点の最短の長さ。

http://okwave.jp/qa2153823.html
こちらにはアイデアとして、楕円を円に直して定点との距離を求め、楕円に戻すということを考えているようですが、この方法だと円と外部の点の距離はどうやって求めたらよいのでしょう?

ヒントでもありましたら宜しくお願い致します。

Aベストアンサー

楕円の式:(x/a)^2 +(y/b)^2=1 (a>b>0としておきます)
定点A(xo,yo) (xo>0,yo>0としておきます)
楕円上の任意点P(c,d) (c>0,d>0としておきます)
 (c/a)^2 +(d/b)^2=1 …(1)
点P(c,d)における接線の式:(cx/a^2)+(dy/b^2)=1
 cxb^2 +dya^2=(ab)^2 …(2)
点P(c,d)における法線の式:(x/c)(a^2)-(y/d)(b^2)=a^2-b^2 …(3)
法線が点Aを通る条件:
 ((x-xo)/c)(a^2)-((y-yo)/d)(b^2)=0
 (x/c)(a^2)-(y/d)(b^2)=(xo/c)(a^2)-(yo/d)(b^2) …(4)
(3),(4)は同一式だから右辺が等しい。
 (xo/c)(a^2)-(yo/d)(b^2)=a^2-b^2 …(5)
(1)と(5)をc,dの連立方程式として解けば、
楕円上の接点P(c,d)が求まる。
 c= ?, d= ?
(↑自分で確認して下さい。文字定数ばかりですから式が複雑になるかも知れません。文字定数に具体的な数値を与えれば簡単に出てきます。)

接線の式(2)上の点P(c,d)と点A(xo,yo)との距離Dが点Aと楕円上の点との最短距離になるから,点A(xo,yo)から接線に下した垂線の公式から
D=|c xo(b^2)+(d yo(a^2)-(ab)^2|/√[{c xo(b^2)}^2 +{d yo(a^2)}^2]
と求まります。

具体的な例題に当てはめて、図を描いいて、上記手順で求めていけば、解が求められますよ。
分からなければ補足質問でどこが分からないか質問されたし。

楕円の式:(x/a)^2 +(y/b)^2=1 (a>b>0としておきます)
定点A(xo,yo) (xo>0,yo>0としておきます)
楕円上の任意点P(c,d) (c>0,d>0としておきます)
 (c/a)^2 +(d/b)^2=1 …(1)
点P(c,d)における接線の式:(cx/a^2)+(dy/b^2)=1
 cxb^2 +dya^2=(ab)^2 …(2)
点P(c,d)における法線の式:(x/c)(a^2)-(y/d)(b^2)=a^2-b^2 …(3)
法線が点Aを通る条件:
 ((x-xo)/c)(a^2)-((y-yo)/d)(b^2)=0
 (x/c)(a^2)-(y/d)(b^2)=(xo/c)(a^2)-(yo/d)(b^2) …(4)
(3),(4)は同一式だから右辺が等しい。
 (xo/c)(a^2)-(yo/d)(b...続きを読む

Q曲面(楕円)と直線との点の最短距離

偏微分のカテゴリに入っていた問題です。

楕円 3x^2+4y^2=12 と
直線 x+2y=9 との点の最短距離を求める。

答えは、楕円上の点(1,3/2)と直線状の点(2,7/2)との距離√5
です。

接線を求めて…
楕円=3x^2+4y^2-12=0
直線=x+2y-9
楕円の dy/dx= -6x/8y = -3x/4y
直線の dy/dx = -1/2
と試行錯誤はしてみたのですが、答えに辿りつきません。
解き方を教えてください。よろしくお願いします。

Aベストアンサー

ANo.2さんの方法でも計算できますが複雑になります。
偏微分を使わない方法を紹介します。

ANo.1さんのご指摘通り、作図してどのあたりが最短距離になるかを把握したほうがいいです。問題の楕円と直線は添付図の赤色になります。図を見れば一目瞭然で、これらの最短距離は線分ACです。ここで注意しなければならないのは、作図しないで微分計算だけでやると、線分BCを最短距離としてしまう恐れがあることです。作図すれば、x が負になるほうは最短でないということが分かるので、最長距離を求めてしまうという間違いを防ぐことができます。

直線と曲線が最短距離になるのは、曲線の傾斜が直線の傾斜と一致するところです。したがって接線を求めるのは間違いではありませんが、接線を求めなくても、傾斜だけ分かればいいのです。つまり、点Aでの楕円の傾斜は直線の傾斜(-1/2)と一致しているということから、点Aの位置を求めることができます。

楕円の式を y = と書き直せば
   y = ±(1/2)*√(12 - 3*x^2)
ですが、符号が-のほうは下半分の楕円なので、これは考える必要はありません(下半分を考えると点Cが出てきてしまいます)。したがってこれ以降、+符号だけを考えます。すると楕円の上半分は
   y = (1/2)*√(12 - 3*x^2) --- (1)
になります。これを x で微分したのが楕円の傾斜になります。
   傾斜 = dy/dx = -3*x/{ 2*√(12 - 3*x^2 ) }
これが直線の傾斜 -1/2 に等しくなる x は
   -3*x/{ 2*√(12 - 3*x^2 ) } = -1/2
   → x = 1
となります( x = -1 は最短距離を与える解ではありません)。点Aのy座標は式(1)から
   y = 3/2
となります。つまり点Aの座標は(1, 3/2 ) になります。図を見てもこの点がAの座標であることが分かります。

点Aから直線までの最短距離の求め方はいろいろありますが、A点から直線に下ろした垂線の足をCとしたとき、線分ACが最短距離になることを使って求めることができます。垂線と直線とは互いに直角なので、垂線の方程式は a を未知数として
   y = 2*x + a
で表わされます。これが点Aを通るので
   3/2 = 2*1 + a
が成り立ちます。したがって
   a = -1/2
つまり、垂線の方程式は
   y = 2*x - 1/2 --- (2)
となります。

垂線の方程式(2)が分かれば点Cの座標も分かるはずです。求める最短距離は線分ACの長さになります。

ANo.2さんの方法でも計算できますが複雑になります。
偏微分を使わない方法を紹介します。

ANo.1さんのご指摘通り、作図してどのあたりが最短距離になるかを把握したほうがいいです。問題の楕円と直線は添付図の赤色になります。図を見れば一目瞭然で、これらの最短距離は線分ACです。ここで注意しなければならないのは、作図しないで微分計算だけでやると、線分BCを最短距離としてしまう恐れがあることです。作図すれば、x が負になるほうは最短でないということが分かるので、最長距離を求めてしまうという...続きを読む

Q一次関数の回転移動について

y=-3xを原点を中心に時計回りに90度回転させるとy=1/3xですよね。これは傾きをかけると-1になることを利用してすぐに解けるのですが、y=-3xを原点を中心に時計回りに45度回転させた直線の式は、どのように求めればいいのでしょうか?

教えて下さい!

Aベストアンサー

一般にθ゜回転させたものは,No1さん,No2さんのようにして求めますが,45゜に限れば次のように簡単に求められます。

y=-3x は原点と A(-1,3) を通る。
90゜回転したものは B(3,1) を通る。
45゜回転したものは,ABの中点 M(1,2) を通る。
ゆえに,y=2x 。

数学では,回転する向きはx軸(の正の部分)がy軸(の正の部分)に重なる向きに計ります。
ふつうは反時計回り(コンピュータの画面の座標は時計回り)です。
No1さんの解答 y=-1/2x はふつうに45゜回転した場合です。

QLNK2019: 未解決の外部シンボルのエラーが出る

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自キャラのデータ
Point2D g_jikipos = {40, 400};//自キャラの座標

//画像ハンドル
int g_jikiimage[11];

//色々なファイルの読み込み
int LoadFiles(){
//画像ファイル読み込み
if(LoadDivGraph("media\\player01.bmp",
11,11,1,64,64,g_jikiimage) == -1) return -1;

return 1;
}


 mymain.h
//他から呼び出させるMyMainの関数
void MyMain();
int LoadFiles();


 myhelper.h(サンプルなので打ちミスはない)
#include "DxLib.h"
#include <limits.h>
#include <math.h>

//構造体宣言
//座標またはベクトルを記録する構造体
struct Vector{
float x,y;
};
typedef Vector Point2D;
//線を記録する構造体
struct Line2D{
Point2D startpos, endpos;
float katamuki;//傾きをラジアン値で記録
Vector speed;//移動している場合は速度をセット
};
//球体を記録する構造体
struct Ball2D{
Point2D position;
float hankei;//半径
};
//四角形を記録する構造体
struct Rect2D{
Point2D lefttop;
Point2D rightbottom;
float width;
float height;
};


//ライブラリ関数
Point2D PosInView(Point2D in);
int XInView(float inx);
int YInView(float iny);
void ScrollToLeft(float jikiposx);
void ScrollToRight(float jikiposx);
void ScrollToUp(float jikiposy);
void ScrollToDown(float jikiposy);
void DrawLineInView(float x1, float y1, float x2, float y2, int Color, int Thickness);
void DrawCircleInView(float x, float y, float r, int Color, int FillFlag);
void DrawAnimation(float x, float y, double ExtRate, double Angle,int TurnFlag,
int *imgarray, int allframe, float fps);
//ベクトル関数
Vector CreateVector(Vector in, float veclen);
Vector AddVector(Vector v1, Vector v2);
Vector SubVector(Vector v1, Vector v2);
Vector AddVectorInFrameTime(Vector pos, Vector speed);
Vector AddVectorInFrameTime2(Vector pos, Vector speed, Vector accel);
Vector Normalize(Vector in);
Vector RotateVector(Vector in, float radian);
float VectorLengthSquare(Vector in);
float DotProduct(Vector v1, Vector v2);
float CrossProduct(Vector v1, Vector v2);
void SetLine2DKatamuki(Line2D *in);
void DrawLine2D(Line2D in, int Color, int Thickness);
void DrawBall2D(Ball2D in, int Color, int Fill);
//当たり判定関数
bool HitTestLineAndBall(Line2D linein, Ball2D ballin);
bool IsPointAtLineFace(Line2D linein, Point2D ptin);
bool HitTestLineAndLine(Line2D line1, Line2D line2);
bool HitTestBallAndBall(Ball2D a, Ball2D b);
bool HitTestPointAndBox(Rect2D rect, Point2D pt);
//タイマー関数
void SetSimpleTimer(int idx, int time);
int GetPassedTime(int idx);


//グローバル変数
extern float g_frametime;
extern Rect2D g_framerect;//画面領域(当たり判定)
extern Point2D g_current_field_pos;//現在の左上座標
extern Rect2D g_stagesize;//ステージサイズ

//定数宣言
const float ZEROVALUE = 1e-10f;
const float PIE = 3.1415926f;
const int SCROLL_LIMIT = 200;
----------------------------------------------------------------
 エラー内容
1>myhelper.obj : error LNK2019: 未解決の外部シンボル "void __cdecl MyMain(void)" (?MyMain@@YAXXZ) が関数 _WinMain@16 で参照されました
1>C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\my\Debug\my.exe : fatal error LNK1120: 外部参照 1 が未解決です
1>my - エラー 2、警告 0
ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ
----------------------------------------------------------------
画像を貼り付けときます
(見えにくい場合→http://www.dotup.org/uploda/www.dotup.org154142.jpg.html)
初心者なのでわかりやすくお願いします

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自...続きを読む

Aベストアンサー

ファイル構成から推測するに
mymain.cpp というファイルに
void MyMain(void) {
// ここに処理を書く
}
という関数が必要なようです。


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング