どちらさまか、凸包問題と言うのを知りませんか?
多数ある点を取り囲む多角形を求めるというものです。
現実的な話で言うと、
壁に多数の釘が刺さっていて、その一番外側を囲むように
輪ゴムを引っ掛けたときにできる多角形の角の座標を求め、
その座標すべてを出力するといったものです。
具体的なアルゴリズムはこちらを見ると詳しく載っています。
よろしくお願いいたします。
http://www.race.u-tokyo.ac.jp/~masuda/jugyo/prog …
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
解答とはいきませんがちょいと手助け。
一応このソースでは変数を宣言して、ファイルからデータを受け取るところまで書いてあります。
データファイルの形式は
[x1],[y1]
[x2],[y2]
.
.
.
と、カンマ区切りで縦に書いてください。(ちなみに[]はいりません)
一番下の/* ここから先が大切 */以下にグリグリかいていくわけです。
コンパイル時には -lm をつけましょう。
cc -lm Convex_Closure.c とかだったかな?
それでは。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
/* 座標データ最大数 */
#define MAX_NUM 64
/* バッファサイズ */
#define BUF_SIZ 256
/* 円周率 */
#define PIE 3.14159265358979
/* 構造体宣言 */
typedef struct{
double x;
double y;
} point;
FILE *fp;
int main(int argc, char *argv[])
{
int i, j;
int last = 0;
int wp, len, min, nxt;
char rBuff[BUF_SIZ];
char Temp[64];
point p[MAX_NUM], tp;
double rad[2];
/* ソース内でのデータ指定は面倒くさいのでファイルで渡すことにします。*/
if(argc == 1){
printf("データファイルがありません。\n");
return 0;
}
/* ファイルを開きましょう。*/
if( (fp = fopen(argv[1], "r")) == NULL ){
printf("ファイルのオープンに失敗しました。\n");
return 0;
}
/* p[]の初期化 */
for(i = 0 ; i < MAX_NUM ; i++)
p[i].x = p[i].y = 0;
/* ファイルの中身を1行ずつ読みます。 */
last = 0;
while( fgets(rBuff, BUF_SIZ, fp) != NULL){
/* 読み込んだバイト数 */
len = strlen(rBuff);
/* 座標データのセット */
for( i = 0, wp = 0 ; i < len ; i++ ){
/* X */
if(rBuff[i] == ','){
Temp[wp] = 0;
wp = 0;
p[last].x = atof(Temp);
continue;
}
/* Y */
if(rBuff[i] == '\n' || rBuff[i] == 0){
Temp[wp] = 0;
p[last].y = atof(Temp);
break;
}
Temp[wp++] = rBuff[i];
}
last++;
}
fclose(fp);
/******************************************************************/
/* ここから先が大切 */
return 0;
}
No.2
- 回答日時:
凸多面体の基底を求めるアルゴリズムを拝見しましたが
書いてあることをそのままするだけですね。
書けませんでは何が書けないのかわからないのでアドバイスのしようがありません。
1.点データをセットするやり方がわからない。とか
2.どうやってΘを求めるかがわからない。とか
3.ループ文の条件がわからない。とか
こうゆうのでしたら答えようもあるんですが。。。
いかかがなもんでしょう?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 中学校 中1数学 比例のグラフの座標の読み取り 4 2023/03/28 12:26
- 物理学 角運動量の式変形が分かりません。 4 2022/08/03 21:04
- 数学 問題「キッチンペーパーだけでバウムクーヘンを五等分せよ」 正解は? 5 2022/12/16 22:18
- 数学 『弧は弦より長し』 8 2022/04/18 10:23
- 数学 ベクトル方程式(ヘッセの標準形)についての質問 2 2022/04/23 18:00
- 数学 凸多角形を用いた正方形の作図 4 2022/04/03 21:57
- 数学 2次関数y=ax^2のグラフは点A(4,2)を通っている。y軸上に点BをAB=OB(Oは原点)となる 1 2022/04/08 00:05
- 数学 AB=2dとなる理由を教えてください 4 2023/08/28 22:38
- 数学 場合の数、確率 30 円周上の鋭角三角形(偶数等分) 2 2023/07/07 04:56
- 数学 極座標A(2,π/6)となる点を通り、OAに垂直な直線lの曲方程式を求めよ という問題を直交座標を利 1 2022/08/04 17:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語でのfscanfについて
-
複数ファイルの同時読み込みの...
-
C言語にてXMLファイルから任意...
-
ファイルへの書込み処理が異常...
-
datファイルの読み込み
-
【C言語】ファイルを読み込んで...
-
fscanfで格納された変数がおか...
-
VisualStudioでのファイルの入...
-
ファイル出力で改行を入れたい!
-
同時にファイル読み込み 書き込み
-
差分ファイルを読み込んで解析する
-
テキストファイル内に対して, ...
-
ガンマ変換 C言語でプログラ...
-
C言語でファイル名を変数にした...
-
C言語でのCSVソートとデータ抽...
-
ファイル読み込み EOF 判定
-
fopenでファイル名に、変数を使...
-
テキストを一文字以上ずつ読み...
-
自己相関関数を求めるプログラ...
-
C言語のファイル入出力の問題です
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数ファイルの同時読み込みの...
-
ファイルへの書込み処理が異常...
-
C言語でファイル読み書きを早く...
-
c言語でのfscanfについて
-
fopenでファイル名に、変数を使...
-
ファイル出力で改行を入れたい!
-
C言語にてXMLファイルから任意...
-
CRC32の計算方法
-
fgets( ) の返り値は何?
-
InternetReadFileを使ったファ...
-
【C言語】ファイルを読み込んで...
-
VisualStudioでのファイルの入...
-
commons-netでのFTP送信について
-
日本語ファイル名のFTPについて
-
fgets関数の利用 c言語
-
C言語でコマンドmvを実行
-
「コマンドライン引数チェック...
-
C言語でセグメンテーションエ...
-
構造体のメンバにファイルポイ...
-
エラー C2664
おすすめ情報