前提・実現したいこと
一辺 L の立方体の内部に,ランダムに整数の座標
値を持つ 2 つの点を発生させその距離の平均値を
算出し,L に対する比率を求めるプログラムを作成
しなさい.なおL=13とする
<<注>>
1.2つの点の位置ベクトルを配列として引数にとり,2点間の距離を計算して返す以下の型・名前・引数の関数をまず作成しなさい. double ENorm(Vec3 p[2])
2.vector.h” を include し,それに含まれる関数を用いなさい.main 以外に新たに作成する関数は,上記 ENorm 関数だけにすること.
3.平均を計算するための発生回数は 10^7回とすること.
実行画面例(L=133)
$ ./hw2018-3
L = 133, R_av = 88.175, R_av/L = 0.66297
$ ./hw2018-3
L = 133, R_av = 88.182, R_av/L = 0.66302
$ ./hw2018-3
L = 133, R_av = 88.191, R_av/L = 0.66309
発生している問題・エラーメッセージ
まったく何をしてよいのかわからない。
該当のソースコード
ソースコード
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
vector.hは
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define deg2rad(deg) ((deg)*M_PI/180)
#define rad2deg(rad) ((rad)*180/M_PI)
typedef struct {
double x, y, z;
} Vec3;
typedef struct {
double r, t, p;
} Pol3;
Vec3 vadd(Vec3 a, Vec3 b)
{
Vec3 v;
v.x = a.x + b.x;
v.y = a.y + b.y;
v.z = a.z + b.z;
return (v);
}
Vec3 vsub(Vec3 a, Vec3 b)
{
Vec3 v;
v.x = a.x - b.x;
v.y = a.y - b.y;
v.z = a.z - b.z;
return (v);
}
double viprod(Vec3 a, Vec3 b)
{
return a.x * b.x + a.y * b.y + a.z * b.z;
}
Vec3 voprod(Vec3 a, Vec3 b)
{
Vec3 c;
c.x = a.y * b.z - a.z * b.y;
c.y = a.z * b.x - a.x * b.z;
c.z = a.x * b.y - a.y * b.x;
return (c);
}
double vabs(Vec3 a)
{
return sqrt(viprod(a, a));
}
double varg(Vec3 a, Vec3 b)
{
return acos(viprod(a, b) / (vabs(a) * vabs(b)));
}
Vec3 pol3tovec3(Pol3 pv)
{
Vec3 v;
v.x = pv.r * sin(pv.t) * cos(pv.p);
v.y = pv.r * sin(pv.t) * sin(pv.p);
v.z = pv.r * cos(pv.t);
return (v);
}
あなたの回答
tips
プレビュー