我在10000像素寬的窗口中移動透視時遇到問題,其中我每毫秒左右執行一次繪圖,並且所有圖形都在x方向上堆疊。我希望能夠沿着x軸將屏幕上顯示的視角移動到我想要的位置,以便我可以看到實時繪圖的發生。導航欄處理大於屏幕圖
我在Arduino型電路板上使用光傳感器與PDE進行光級交流,並且我爲每個光讀取實例繪製了一條貝塞爾曲線,使得Bezier在光線暗淡時變寬,而當光線較強時則變窄。
我想實現這種類型的導航欄:
void setup()
{
size(1800, 1800);
}
void draw()
{ int x_navigator = width/2 - width/6, y_navigator = 80, navigator_width = width/3, navigator_height = 40;
fill(204);
rect(x_navigator, y_navigator, navigator_width, navigator_height);
fill(250, 204, 0, 160);
if (mouseX > x_navigator && mouseY > y_navigator && mouseX < x_navigator + navigator_width && mouseY < y_navigator + navigator_height)
{
if (mouseX < x_navigator + navigator_width/12)
{
rect(x_navigator, y_navigator, navigator_width/6, navigator_height);
}
else
{
if (mouseX > x_navigator + ((11 * navigator_width)/12))
{
rect(x_navigator + (5 * navigator_width)/6, y_navigator, navigator_width/6, navigator_height);
}
else
{
rect(mouseX - (navigator_width/12), y_navigator, navigator_width/6, navigator_height);
}
}
}
}
在我的代碼,吸引了貝濟耶:
import processing.serial.*;
Serial Engduino;
String light_String = "", temperature_String = "";
int constant = 300;
float begin_x = 0, begin_y = 550, end_x, end_y, control = 1, light, temperature;
void setup()
{
String portName = "COM3";
Engduino = new Serial(this, portName, 9600);
size(1000, 800);
noFill();
smooth();
strokeWeight(3);
}
void draw()
{
if (Engduino.available() > 0)
{
light_String = Engduino.readStringUntil('\n');
try{light = parseFloat(light_String);}
catch(NullPointerException e)
{;}
println("The light is: ");
println(light);
end_x = begin_x + (400/(sqrt(light) + 1));
end_y = begin_y - constant;
control = end_x - begin_x;
bezier(begin_x, begin_y, begin_x + control, begin_y, end_x - control, end_y, end_x, end_y);
constant = constant * (-1);
begin_x = end_x;
begin_y = end_y;
}
}
同時使它的功能,以將顯示的圖像移動到光標所在的位置,以便我可以實時看到圖形,並檢查前面的c如果我願意的話,我會畫出。
編輯:因此,如果沒有Engduino工作的代碼是這樣的:
int constant = 300;
float begin_x = 0, begin_y = 550, end_x, end_y, control = 1, light = 30; // Light is what I get through the serial port from the Engduino (an Arduino type board`)
void setup()
{
size(10000, 800); // The 10000-pixel wide window.
noFill();
smooth();
strokeWeight(3);
}
void draw()
{
end_x = begin_x + (400/(sqrt(light) + 1));
end_y = begin_y - constant;
control = end_x - begin_x;
bezier(begin_x, begin_y, begin_x + control, begin_y, end_x - control, end_y, end_x, end_y);
constant = constant * (-1);
begin_x = end_x;
begin_y = end_y;
}
我想是有我展示了(至少在設計)類型的導航條來瀏覽周圍的10000像素寬的窗口。我上傳的導航條碼只是導航的設計,沒有功能,這是我想要一些幫助的地方。
如果你發佈一個不依賴於串行庫的[mcve],你會有更好的運氣。只需使用硬編碼的圖形,以便我們可以複製並粘貼代碼來運行它。你也沒有告訴我們問題是什麼。你期望這個代碼做什麼?它做什麼呢?您是否試圖將其縮小到與您期望的行爲不同的特定代碼行? –
當然,我會很快發佈一個修改。 –
我已經發布了編輯,並且指定了這個問題。 –