問題
我需要使用浮點陣列創建一個圓形輪廓。該功能CircleOutline(int res, int r1, int r2)完成了我想要的。它創建一個float帶有 1 的未填充圓(圓輪廓)的陣列。其他都是0。
但是,我只需要使用一組 xy 即可for loops。
此部分if ((c - x) * (c - x) (c - y) * (c - y) < r1_2)填充圓周內的所有內容。我想,但我不確定,我需要這個的倒數(在外面填充)。
概念
這是我認為可行的偽代碼:
if (current index is inside circumferenceA)
if (current index is outside circumferenceB)
map.add(1);
圓形輪廓浮點陣列
static float [] CircleOutline(int res, int r1, int r2)
{
float [] map = new float[res * res];
float c = res / 2;
float r1_2 = r1 * r1;
for (int x = 0; x < res; x )
{
for (int y = 0; y < res; y )
{
if ((c - x) * (c - x) (c - y) * (c - y) < r1_2)
{
map[x y * res] = 1f;
}
}
}
float r2_2 = r2 * r2;
for (int x = 0; x < res; x )
{
for (int y = 0; y < res; y )
{
if ((c - x) * (c - x) (c - y) * (c - y) < r2_2)
{
map[x y * res] = 0f;
}
}
}
return map;
}
提前為您提供時間和智慧,謝謝。
uj5u.com熱心網友回復:
因為沒有專門針對使用浮點陣列的輪廓的答案,而且我剛剛弄清楚,所以我將發布我的答案:
float [] map = new float[res * res];
float c = res / 2;
float r1_2 = r1 * r1;
for (int x = 0; x < res; x )
{
for (int y = 0; y < res; y )
{
if ((c - x) * (c - x) (c - y) * (c - y) < r1_2)
{
if ((c - x) * (c - x) (c - y) * (c - y) > r2_2)
{
map[x y * res] = 1f;
}
}
}
}
在我寫了我的偽代碼后我想通了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/362847.html
