我正在使用Processing来学习编程,并想知道是否有办法使OS窗口增长,缩小,使其透明或赋予它圆形边缘.据我所知,Processing使用Java的Frame类而不是JFrame类,但我无法弄清楚如何做到这一点.
谢谢你的帮助.
作为参考,类似的问题在 Re:强迫窗口停留在所有其他窗口之前 - 回复#3
所以我现在已经在Processing工作了几个星期,虽然我没有编程方面的经验,但我已经转向了更复杂的项目.我正在编程一个进化模拟器,它会生成具有随机属性的生物.
最终,我将添加复制品,但截至目前,这些生物只是漂浮在屏幕周围,并且稍微跟着鼠标.它与来自线路的声音相互作用,但我对这些部分进行了评论,以便可以在画布上查看,它不应该真正改变问题,我只是想我会指出它.
截至目前,帧速率对我来说远非理想,随着更多生物的产生,它逐渐降低.我是否犯了一些基本错误,或者我只是每帧运行太多功能?
这里的源代码,你可以在浏览器中玩它在这里:
//import ddf.minim.*;
//import ddf.minim.signals.*;
//import ddf.minim.analysis.*;
//import ddf.minim.effects.*;
//Minim minim;
//AudioInput in;
boolean newCreature = true;
boolean matured[];
int ellipses[];
int hair[];
int maxCreatureNumber = 75;
//int volume;
//int volumeTolerance = 1;
int creatureIndex = -1;
int creatureX[];
int creatureY[];
float strokeWeightAttribute[];
float creatureSize[];
float creatureEndSize[];
float creatureXIncrement[];
float creatureYIncrement[];
float bubbleSize;
float easing = 0.05;
float angle = 0.00;
color colorAttribute[];
void setup() {
background(0);
size(1000,500);
noFill();
//minim = new Minim(this); …Run Code Online (Sandbox Code Playgroud) 在处理中,我可以调用fill(myRGBValue)
设置填充颜色。有没有办法让我查询当前的填充颜色?
我试图通过传递图像宽度和高度的参数来设置处理 3.0中的窗口大小。但是,处理会抛出错误并要求检查参考部分,但这没有帮助。代码如下。
PImage img;
...
void setup(){
img = loadImage("XYZ.JPG");
float w = img.width;
float h = img.height;
size(int(w), int(h));
image(img, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)
和错误如下:
size() function cannot be used here
Run Code Online (Sandbox Code Playgroud) 我已经在Processing 中编程一段时间了。我还处理过形状和SVG文件。在处理中获得关于文件的这种卑微经历SVG让我认为在 中也会有同样的故事P5.js,但事实显然并非如此,并促使我寻求帮助。
回到处理我只会有这样的简单代码:
PShape shape;
/***************************************************************************/
void setup()
{
size(400, 400);
shapeMode(CENTER);
shape = loadShape("bot1.svg");
}
/***************************************************************************/
void draw()
{
background(100);
pushMatrix();
translate(width/2, height/2);
shape(shape, 0, 0);
popMatrix();
}
Run Code Online (Sandbox Code Playgroud)
P5不是这样的。相当于什么P5.js?
var shape;
var canvas;
/***************************************************************************/
function setup()
{
canvas = createCanvas(400, 400);
canvas.position(0, 0);
//shapeMode(CENTER);
//shape = loadShape("bot1.svg");
}
/***************************************************************************/
void draw()
{
background(100);
push();
translate(width/2, height/2);
//shape(shape, 0, 0);
pop();
}
Run Code Online (Sandbox Code Playgroud) 该代码在处理 2 中工作正常,但在 size() 函数中使用处理 3 中的变量不起作用,我将如何在处理 3 中实现 displaywdith-100
int val, screen_increment, old_x=0, old_y=0;
String inString;
int lf = 10;
void setup()
{
size(displayWidth-100, 600);// The screen height is set to be 600, which matches the scaled data,
String portName = Serial.list()[0];
println(Serial.list());
myPort = new Serial(this, portName, 115200);
myPort.bufferUntil(lf);
background(0);
}//setup
Run Code Online (Sandbox Code Playgroud) 我使用这个公式来计算二次曲线上的点:
cPx2 = (1-t)*(1-t)* x1+2 * (1-t)*t*qcX + t*t*x2;
cPy2 = (1-t)*(1-t)* y1+2 * (1-t)*t*qcY + t*t*y2;
Run Code Online (Sandbox Code Playgroud)
当我设置 t = 10 并遍历曲线时,我得到了这个:
看起来它正在获得曲线上的点(花朵形状),但也获得了“控制点”上的所有点。
我用这个公式来生成点:
flowerArray=[]
for(let i = 0; i < numVertices+1; i++) {
angle = i * spacing;
x = centerX + cos(radians(angle)) * 180;
y = centerY+ sin(radians(angle)) * 180;
if(i == 0) {
flowerArray.push(x,y);
}else {
cAngle = angle - spacing/2;
cX = centerX + cos(radians(cAngle)) * 100;
cY = centerY+ sin(radians(cAngle)) * 100;
flowerArray.push(cX,cY,x,y)
}
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个时钟并将所有数字放在正确的位置,但它们都旋转了,例如 6 倒置而 12 是正确的。反正有没有只旋转文本而不是文本的位置?
我的代码是
push();
textSize(48);
for (int i = 1; i < 13; i++) {
int offset = -15;
if (str(i).length() == 2) {
offset -= 14.5;
}
rotate(radians(30));
text(i, offset, -350);
//println(i*30);
}
pop();
Run Code Online (Sandbox Code Playgroud) 我想创建一个旋转函数,其中我的三角形可以像轮子一样自行旋转,但我与移动我的三角形的代码部分发生冲突,我尝试了很多解决方案但没有成功,也许如果你们中的一个人有线索,它会对人好点!
这是我的代码:
let triangle1;
let triangle2;
let triangle3;
let triangle4;
let triangle5;
let triangle6;
let speedX;
let speedY;
let startColor;
let endColor;
let amt = 0;
function setup() {
startColor = color("hsl(144, 100%, 61%)");
endColor = color("hsl(0,77%,36%)");
createCanvas(windowWidth, 800);
//creer notre triangle
triangle1 = new Triangles(200, 100, 0, 4);
/* triangle2 = new Triangles(100, 50, 2, 0);
triangle3 = new Triangles(50, 200, -1, 4);
triangle4 = new Triangles(250, 400, 4, 4);
triangle5 = new Triangles(150, 500, 0, 2);
triangle6 = …Run Code Online (Sandbox Code Playgroud)我正在处理动作捕捉数据,我想在处理中进行“蒙皮”。因此,基本上,我从数据中获得的每两个点都必须在其间添加一个 3D 对象(我现在将使用一个盒子,放置和旋转坐标是 3D 对象的中心)并旋转它,以便它在所有三个维度上与连接两点的向量对齐。
在这里,我们可以在左侧看到两点之间最初放置的框,在右侧看到现在正确旋转的框:

我知道在处理中旋转对象的唯一方法是使用rotateX()、rotateY()、rotateZ()函数,它们使用欧拉角围绕全局(?)轴旋转对象。
现在我正在努力寻找一种正确计算这种旋转的方法。
我已经编写了一个用于计算两个向量之间的角度的函数:
float calcVectorAngle(PVector p1, PVector p2) {
return acos((p1.dot(p2)) / (mag(p1.x, p1.y, p1.z) * mag(p2.x, p2.y, p2.z)));
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试将向量(两点之间)与每个旋转轴之一的单位向量结合起来:
float x = calcVectorAngle(vector, new PVector(1,0,0));
float y = calcVectorAngle(vector, new PVector(0,1,0));
float z = calcVectorAngle(vector, new PVector(0,0,1));
Run Code Online (Sandbox Code Playgroud)
但是当我使用这些值旋转对象时,旋转完全关闭。
代码示例:
PVector p1;
PVector p2;
PVector boxSize = new PVector(500, 100, 100);
void setup() {
size(1000,1000,P3D);
p1 = new PVector(100, 100, 0);
p2 = new PVector(900, 900, -1000);
}
void draw() {
background(125);
strokeWeight(2); …Run Code Online (Sandbox Code Playgroud) processing ×10
java ×3
p5.js ×3
colors ×1
euler-angles ×1
javascript ×1
math ×1
optimization ×1
shapes ×1
svg ×1