Publicなリモートレポジトリをgit cloneしてみる
前記事で作ったGitlab.comのPublicなレポジトリへのURLは、
でした。これを指定して、IDE内部からgit cloneしてみます。まずはIDEのトップメニューのファイルから、

上図のように”バージョン管理レポジトリから開く”を選択。続いて、

gitを確認しておけ。

ここのソースにclone urlをペーストして。保存先を適宜設定。

ここではいかにもな”fringe-clone-test”を選択。”OK”をクリック。

無事cloneできて選択すべきプロジェクトが表示されているので、“OK”をクリック。
プロジェクトが読み込まれた状態なので、例えば“F9”を押す。無事にコンパイル、リンク、起動され、

となればオケです。“Make It So”ボタンを押してみて。

ソースの一部だけ解説します。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int vpos;
double dmax,dmin;
char visibility[100];
min = StrToInt(Edit1->Text);
max = StrToInt(Edit2->Text);
pitch = StrToInt(Edit3->Text);
dmax = max;
dmin = min;
amp = max - min;
offset = min;
angle = 3.1415*2.0/pitch;
sprintf(visibility,"%5.4g",(dmax-dmin)/(dmax+dmin));
Label4->Caption = AnsiString(visibility);
Image1->Picture->Bitmap->Height = Image1->Height;
Image1->Picture->Bitmap->Width = Image1->Width;
Image1->Picture->Bitmap->PixelFormat = pf24bit;
Image2->Canvas->Pen->Color = clBlack;
Image2->Canvas->Brush->Color = clWhite; // back ground is clBtnFace
Image2->Canvas->FillRect(Rect(0,0,Image2->Width-1,Image2->Height-1));
Image2->Canvas->MoveTo(0,0);
Image2->Canvas->LineTo(0,Image2->Height-1);
Image2->Canvas->LineTo(Image2->Width-1,Image2->Height-1);
Image2->Canvas->LineTo(Image2->Width-1,0);
Image2->Canvas->LineTo(0,0);
Image2->Canvas->Pen->Color = clRed;
for( int row = 0 ; row < Image1->Height ; row++ ){
BYTE *scanPtr = (BYTE *)Image1->Picture->Bitmap->ScanLine[row];
for( int col = 0 ; col < Image1->Width ; col++ ){
BYTE* tempPtr = scanPtr+col*3;
double intensity;
double dist;
if(CheckBox1->Checked ){
dist = sqrt((row-160)*(row-160)+(col-200)*(col-200));
intensity = offset + amp*((1.0+cos(angle*dist))/2.0);
}
else
intensity = offset + amp*((1.0+cos(angle*(double)col))/2.0);
if( intensity < 0 )
intensity = 0;
if( intensity > 255 )
intensity = 255;
BYTE val = (BYTE)intensity;
if( RadioButton1->Checked ) {
tempPtr[0] = 0;
tempPtr[1] = 0;
tempPtr[2] = val;
}
else if( RadioButton2->Checked){
tempPtr[0] = val;
tempPtr[1] = 0;
tempPtr[2] = 0;
}
else if( RadioButton3->Checked){
tempPtr[0] = 0;
tempPtr[1] = val;
tempPtr[2] = 0;
}
else {
tempPtr[0] = val;
tempPtr[1] = val;
tempPtr[2] = val;
}
}
}
int row = 160;
for( int col = 0 ; col < Image1->Width ; col++ ){
double intensity;
double dist;
if(CheckBox1->Checked ){
dist = sqrt((row-160)*(row-160)+(col-200)*(col-200));
intensity = offset + amp*((1.0+cos(angle*dist))/2.0);
}
else
intensity = offset + amp*((1.0+cos(angle*(double)col))/2.0);
if( intensity < 0 )
intensity = 0;
if( intensity > 255 )
intensity = 255;
vpos = intensity*160/256;
vpos = 160 - vpos;
if( col == 0 )
Image2->Canvas->MoveTo(0,vpos);
else
Image2->Canvas->LineTo(col,vpos);
}
Image1->Refresh();
Image2->Refresh();
}
波長をRGB値に変換するのはテキトーです。便宜的にHe-Neレーザ(赤)の場合は、Rのみ、以下488.0nmならBのみ等々です。波長からRGBをきちんと計算することも可能のようですが、筆者の記憶と大きな差がないので、そのままです。真面目に扱うと、
始め色々とgoogleできます。
コメント