javaアプリ推進委員会

javaアプリの作成を推進するページです。

記事のタイトルを入力してください(必須)

2017-03-20 14:49:02 | Java
コードの断片

#define WIDTH 640
#define HEIGHT 480

class FPOINT
{
public:
float x;
float y;
FPOINT();
FPOINT(float inx, float iny);
};
FPOINT::FPOINT()
{
x = 0;
y = 0;
}
FPOINT::FPOINT(float inx, float iny)
{
x = inx;
y = iny;
}

FPOINT CalcCenter(FPOINT p1, FPOINT p2, FPOINT p3, FPOINT p4)
{
FPOINT c;
float s1;
float s2;

s1 = ( (p4.x - p2.x) * (p1.y - p2.y) - (p4.y - p2.y) * (p1.x - p2.x) ) / 2;
s2 = ( (p4.x - p2.x) * (p2.y - p3.y) - (p4.y - p2.y) * (p2.x - p3.x) ) / 2;

c.x = p1.x + (p3.x - p1.x) * s1 / (s1 + s2);
c.y = p1.y + (p3.y - p1.y) * s1 / (s1 + s2);

return c;
}
void drawS(int width, int height, FPOINT sp1, FPOINT sp2, FPOINT sp3, FPOINT sp4,
FPOINT dp1, FPOINT dp2, FPOINT dp3, FPOINT dp4)
{
// http://imagingsolution.blog107.fc2.com/blog-entry-137.html
FPOINT tp1;
FPOINT tp2;
FPOINT tp3;
FPOINT tp4;
FPOINT tmptc;
FPOINT tpc;

FPOINT vp1;
FPOINT vp2;
FPOINT vp3;
FPOINT vp4;
FPOINT tmpvc;
FPOINT vpc;

float fwidth = (float)(width - 1);
float fheight = (float)(height - 1);

tp1.x = sp1.x / fwidth;
tp1.y = sp1.y / fheight;

tp2.x = sp2.x / fwidth;
tp2.y = sp2.y / fheight;

tp3.x = sp3.x / fwidth;
tp3.y = sp3.y / fheight;

tp4.x = sp4.x / fwidth;
tp4.y = sp4.y / fheight;

tmptc = CalcCenter(sp3, sp4, sp2, sp1);
tpc.x = tmptc.x / fwidth;
tpc.y = tmptc.y / fheight;

vp1.x = (dp1.x / fwidth) * 2 - 1;
vp1.y = (dp1.y / fheight) * 2 - 1;

vp2.x = (dp2.x / fwidth) * 2 - 1;
vp2.y = (dp2.y / fheight) * 2 - 1;

vp3.x = (dp3.x / fwidth) * 2 - 1;
vp3.y = (dp3.y / fheight) * 2 - 1;

vp4.x = (dp4.x / fwidth) * 2 - 1;
vp4.y = (dp4.y / fheight) * 2 - 1;

// vpc.x = tpc.x * 2 - 1;
// vpc.y = tpc.y * 2 - 1;
tmpvc = CalcCenter(dp3, dp4, dp2, dp1);
vpc.x = (tmpvc.x / fwidth) * 2 - 1;
vpc.y = (tmpvc.y / fheight) * 2 - 1;

glBegin(GL_TRIANGLE_STRIP);
glTexCoord4f(tp1.x, tp1.y, 0, 1); glVertex2d(vp1.x, vp1.y);//左下
glTexCoord4f(tp2.x, tp2.y, 0, 1); glVertex2d(vp2.x, vp2.y);//右下
glTexCoord4f(tpc.x, tpc.y, 0, 1); glVertex2d(vpc.x, vpc.y);//中心
glEnd();

glBegin(GL_TRIANGLE_STRIP);
glTexCoord4f(tp4.x, tp4.y, 0, 1); glVertex2d(vp4.x, vp4.y);//右上
glTexCoord4f(tp2.x, tp2.y, 0, 1); glVertex2d(vp2.x, vp2.y);//右下
glTexCoord4f(tpc.x, tpc.y, 0, 1); glVertex2d(vpc.x, vpc.y);//中心
glEnd();

glBegin(GL_TRIANGLE_STRIP);
glTexCoord4f(tp3.x, tp3.y, 0, 1); glVertex2d(vp3.x, vp3.y);//左上
glTexCoord4f(tp4.x, tp4.y, 0, 1); glVertex2d(vp4.x, vp4.y);//右上
glTexCoord4f(tpc.x, tpc.y, 0, 1); glVertex2d(vpc.x, vpc.y);//中心
glEnd();

glBegin(GL_TRIANGLE_STRIP);
glTexCoord4f(tp1.x, tp1.y, 0, 1); glVertex2d(vp1.x, vp1.y);//左下
glTexCoord4f(tp3.x, tp3.y, 0, 1); glVertex2d(vp3.x, vp3.y);//左上
glTexCoord4f(tpc.x, tpc.y, 0, 1); glVertex2d(vpc.x, vpc.y);//中心
glEnd();

}
ジャンル:
ウェブログ
コメント   この記事についてブログを書く
この記事をはてなブックマークに追加
« NetBeansでiアプリ開発 | トップ | opengl テクスチャ シェーダ »
最近の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。

あわせて読む

トラックバック

この記事のトラックバック  Ping-URL
ブログ作成者から承認されるまでトラックバックは反映されません。
  • 送信元の記事内容が半角英数のみのトラックバックは受け取らないよう設定されております。
  • このブログへのリンクがない記事からのトラックバックは受け取らないよう設定されております。
  • ※ブログ管理者のみ、編集画面で設定の変更が可能です。