- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请帮助我如何用三种颜色给三角形上色。我把它当作学校的问题,使用Java编程语言
你好,这是代码:我试图用三种颜色填充三角形,但很难混合颜色来得到它。如果你要解决它(近似),请尽可能多地发送给我,我把它作为作业和 5-6 天的截止日期
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.geom.*;
public class NotFullVersion2 extends JApplet {
public static void main(String s[]) {
JFrame frame = new JFrame();
frame.setTitle("Colors");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JApplet applet = new NotFullVersion2();
applet.init();
applet.addMouseListener(
new MouseAdapter(){
public void mousePressed(MouseEvent e) {
System.out.println(e.getX() + " " + e.getY());
}});
frame.getContentPane().add(applet);
frame.pack();
frame.setVisible(true);
}
ColorPanel panel;
public void init() {
panel = new ColorPanel();
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
cp.add(panel, BorderLayout.CENTER);
JPanel p = new JPanel();
cp.add(p,BorderLayout.EAST);
}
}
class ColorPanel extends JPanel {
//int red = 100,green = 100, blue = 100;
public ColorPanel() {
setPreferredSize(new Dimension(500, 500));
setBackground(Color.black);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
for(int i = 0; i < 256; i++) {
int start = 399;
g2.setColor(new Color(0,i,255-i));
for(int j = 0; j < 200; j ++) {
Rectangle rec = new Rectangle(150+j,start - i,1,1);
g2.fill(rec);
}
}
for(int j = 0; j < 100; j++) {
int start = 100;
for(int i = 0; i < 300; i++) {
if(i < 22) {
g2.setColor(new Color(255,0,0));
Rectangle rec = new Rectangle(100 + i,start + j,1,1);
g2.fill(rec);
} else if(i > 21 && i < 278) {
g2.setColor(new Color(255-(i-22),(i-22),0));
Rectangle rec = new Rectangle(100 + i,start + j,1,1);
g2.fill(rec);
} else if(i < 300) {
g2.setColor(new Color(0,255,0));
Rectangle rec = new Rectangle(100 + i,start + j,1,1);
g2.fill(rec);
}
}
}
GeneralPath closePath1a = new GeneralPath();
g2.setColor(new Color(0,0,0));
closePath1a.moveTo(100,100);
closePath1a.lineTo(100,400);
closePath1a.lineTo(250,400);
closePath1a.closePath();
g2.fill(closePath1a);
GeneralPath closePath2a = new GeneralPath();
g2.setColor(new Color(0,0,0));
closePath2a.moveTo(400,100);
closePath2a.lineTo(400,400);
closePath2a.lineTo(250,400);
closePath2a.closePath();
g2.fill(closePath2a);
GeneralPath closePath3a = new GeneralPath();
g2.setColor(new Color(0,0,0));
closePath3a.moveTo(100,100);
closePath3a.lineTo(100,50);
closePath3a.lineTo(400,50);
closePath3a.lineTo(400,100);
closePath3a.closePath();
g2.fill(closePath3a);
}
}
最佳答案
像这样给三角形上色相当于计算三角形内每个像素的重心坐标。以下未经测试代码计算三角形 ABC 内每个像素的重心坐标,然后使用它为该像素着色:
private float area(float Ax, float Ay, float Bx, float By, float Cx, float Cy) {
return 0.5*((Ax - Cx)*(By - Ay) - (Ax - Bx)*(Cy - Ay));
}
private void paintTriangle(Graphics g, float Ax, float Ay, float Bx, float By, float Cx, float Cy) {
// calculate the bounding box of the triangle:
int minX = Math.round(Math.min(Ax, Math.min(Bx, Cx)));
int minY = Math.round(Math.min(Ay, Math.min(By, Cy)));
int maxX = Math.round(Math.max(Ax, Math.max(Bx, Cx)));
int maxY = Math.round(Math.max(Ay, Math.max(By, Cy)));
// loop for each pixel in the bounding box of the triangle
for(int y = minY; y < maxY; ++y) {
for(int x = minX; x < maxX; ++x) {
// center of the pixel (x,y)
float Px = x + 0.5, Py = y + 0.5;
// barycentric coordinates of P
float denom = area(Ax, Ay, Bx, By, Cx, Cy);
float b0 = area(Px, Py, Bx, By, Cx, Cy)/denom;
float b1 = area(Ax, Ay, Px, Py, Cx, Cy)/denom;
float b2 = area(Ax, Ay, Bx, By, Px, Py)/denom;
// discard pixels outside the triangle
if(b0 < 0 || b1 < 0 || b2 < 0)
continue;
// paint a pixel of color (b0,b1,b2) at (x,y)
g.setColor(new Color(b0,b1,b2));
g.fillRect(x,y,1,1));
}
}
}
我会留给您测试和集成此代码。
您可以在 wikipedia 上阅读更多关于重心坐标的信息;
关于java - 用 3 种颜色给三角形上色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61043652/
通过阅读文档,我确信这是明确声明的,但添加图标仍然是灰色的。 class _TaskState extends State { @override Widget b
通过阅读文档,我确信这是明确声明的,但添加图标仍然是灰色的。 class _TaskState extends State { @override Widget b
这个问题在这里已经有了答案: Get random elements from array in Swift (6 个答案) 关闭 7 年前。
你好,我有一个表,其中包含一些字段,例如 这里我想为表格整行设置颜色..意味着如果 ASR 值是 75 到 100 应该得到一种颜色,50 到 75 应该得到另一种颜色,低于 50 应该得到另一种颜色
如何为 fish 中的 ls 命令着色?我在 Mac 上使用带有适当字体等的 ITerm2。由于某种原因它停止在我的电脑上工作。当我做推荐的时候 function ls command ls
我尝试在 -webkit-transform:rotate(45deg) skew(5deg); 上添加颜色或背景色,但我没有尝试。请帮助我。 我有这个 Sencha Touch 的代码: .x-ch
我使用默认配色方案(稍作改动),没有着色插件。 不幸的是,现在我需要在无法使用 256 色模式的远程机器上工作(使用 Putty)。这看起来很纯净。 我尝试修复它,但我无法理解不同部分的突出显示名称是
是否可以给 scipy.spatial.Voronoi 上色?图表? I know it is. 但现在我的目标是根据色标为每个单元格着色以表示物理量。 如下图(PRL 107, 155704 (20
我正在使用 ggplot2 geom_bar 制作标准条形图。我试图用与最低值的条不同的颜色填充最高值的条。 例如, ggplot(mtcars, aes(x=as.factor(cyl) )) +
我正在尝试对 map 上的特定图 block 进行样式设置,但不知道如何设置。谷歌有一个我在这里指的图 block 的示例: https://developers.google.com/maps/do
我想通过添加一个名为“色调”的 Canvas 来为 Canvas 上的 png 着色,该 Canvas 会将颜色分配给主 Canvas 上的 png。但根本没有绘制任何东西: js fiddel co
我创建了一个模糊 View 并添加到主视图的 subview 中。这是我的代码: let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.ligh
我正在尝试实现与 this function in Matlab 相同的行为,其中每个箭头的颜色对应于它的大小和方向,本质上是从轮子中绘制它的颜色。我看到了this question ,但它似乎只适用
假设有一个fa图标: //这段代码不正确 我的目的是为奖杯本身着色,而不是为奖杯外的背景着色。现在我的奖杯看起来是黑色的,我怎样才能把奖杯的颜色改成黄色? 最佳答案 Font awesome 是
你好我正在做一个 Twitter 应用程序,我想给主题标签、用户名和 URL 上色这是我的手机上的课 class TweetTableViewCell: UITableViewCell { var t
我在下面尝试过,但它在解析颜色时抛出了一个语句错误。提前致谢。 hexColorStr = "0x0976b8" view.setBackgroundColor(Color.parseColor(St
我需要显示一个由圆形和多边形组成的 map ,每个圆形或多边形可能有不同的颜色。 我最初的计划是子类化 MKCircle 和 MKPolygon 并为我的 Region 类添加一个实例变量(其中包含将
我有以下用于生成箭头线的 ng 模板:
我正在使用 Git,使用 Windows 7、PowerShell 和 Posh-Git。我有以下别名设置: ls = log --pretty=tformat:"%C(yellow)%h\\ %C(
我是一名优秀的程序员,十分优秀!