
こんにちは!
先週C言語のプログラミングの課題が出て土日もずっと考えたのですが全く意味が分かりません><
どなたか教えてください泣
内容は、スキャンライン法で二次元三角形を作り(三角形の塗りつぶし)、BMPファイルへ出力せよというものです。
1. 3角形を囲む長方形・ (xmin,xmax,ymin,ymax)
2. Y座標をymax~yminまで, 1ずつ減らしながら以下を繰り返す
(a)スキャンラインSL(Y=y)発生
(b)SLと3角形との交点(線形補間)
(c)交点間の画素を 表示色(r,g,b)で塗る
*端点や水平線に注意
よろしくお願いします><
No.3ベストアンサー
- 回答日時:
>スキャンラインY=yが何を意味するのか分からないし
スキャンラインSLのY座標をyとする、ということです。
スキャンラインSLは、水平な直線です。
そのY座標をyとした時に、SLと三角形の辺との交点を求めます。
交点が2つ有る場合、交点の座標は(x1,y)と(x2,y)になるので
2つの交点の間を塗りつぶす(=2つの交点の間に線を引く)
この処理を、Y座標をyminからymaxまで変えながら行う。
No.2
- 回答日時:
海苔巻きを作るときに使用する「すだれ」を竹の棒が横になるようにぶら下げて水彩絵の具ですだれに絵を描いてみてください。
竹の棒の一本一本がスキャンラインです。筆を左右上下に動かして、すだれ全体に絵を描くのではなく、竹の棒を一本一本塗る感じで絵を書く感じです。
線形補間というのは比例を使用した補間です。早い話が、すだれの左下を原点として竹の棒の向きをx軸として考えてすだれの上に三角形を書くと、三角形の各辺はy=ax+bの形に表すことができます。頂点を除いて、それぞれの竹の棒は三角形の2つの辺と交差すると思いますから、2つの辺の交点を求めて、竹の棒のその間を塗っていけばいいでしょう?
No.1
- 回答日時:
わからない箇所はどこでしょう?
方眼紙を用意してください。
そこに三角形を書いてください。
その三角形が収まるマスが「1」
ある横方向に並んだマス目に注目して、三角形の辺があるマスに色を塗るのが 「2」
二つの頂点を通る直線と、Y=yの交点を求めるのは、算数か数学でやったはず。
むずかしいのはBMPファイルの出力で、C言語の標準では、そのものずばりのものはありません。
この回答への補足
見ていただいてありがとうございます!
最初に以下のソースファイルとヘッダファイル1つとwriteBmp.cというファイルが渡されたのでBMPファイルが出力できるのだと思います。
課題はこのソースファイルに付け足すというものです!
スキャンラインY=yが何を意味するのか分からないし、線形補間が何かを調べたんですが理解ができなくて困っています><
/*
24ビットBMPファイルの書き込み
*/
#include "cg.h"
#include "writeBmp.c"
/* ビットマップデータの生成 */
void mbitmap(int width, int height)
{
int i, j;
for (i=0; i<height; i++)
for (j=0; j<width; j++) {
Pixel[i][j][0] = (unsigned char)255;
Pixel[i][j][1] = (unsigned char)255;
Pixel[i][j][2] = (unsigned char)0;
}
}
void main(void)
{
int width = 640,
height = 480;
/* ビットマップデータの生成 */
mbitmap(width, height);
/* 24ビット-ビットマップファイルへの書き込み */
bmpout("sample.bmp", width, height);
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
始点、終点の二つの座標と半径...
-
ワード上Shapeの位置情報を統一...
-
マークシート読取ソフトの仕組...
-
C言語 配列で座標
-
6点からの楕円の近似計算(最...
-
最小二乗平面
-
プログラム
-
求積表の計算方法
-
マインクラフト(pc版)で座標...
-
多角形の内部かどうか判定する方法
-
以下のプログラムは重心を求め...
-
エクセルである点からの距離で...
-
3次元座標上の2直線の交点判...
-
「アイテムは収集されました」...
-
エクセルで作った新しいウイン...
-
皆さん、おはようございます♪ ...
-
コントロールの書式設定で、“コ...
-
エクセルのコントロールツール...
-
【VB2008】 マウス操作の一時的...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
3次元空間上の2つの座標から...
-
シーケンサー(PLC?)で制...
-
ダイアログ内コントロールの位...
-
エクセルで回転する座標の出し方
-
ワード上Shapeの位置情報を統一...
-
始点、終点の二つの座標と半径...
-
Excel VBA で自在に図形を変化...
-
C言語で制作するピラミッドアー...
-
C言語 配列で座標
-
閉図形の座標の配列が右回りか...
-
ガウシアンフィルタのCプログラム
-
任意点を中心とした回転
-
c言語でキーボードから2点の座...
-
3D→2Dの座標変換で、スクリーン...
-
求積表の計算方法
-
以下のプログラムは重心を求め...
-
複数の回転する長方形の衝突判定
-
直線上にある点の座標の求め方
おすすめ情報