技术标签: 算法 经验分享 笔记 java 计算机视觉 程序人生
java实现计算机图形学中点画圆算法
计算机图形学实验一
采用中点画圆算法原理绘制1/8圆弧,然后利用圆的高度对称性,基于java的Graphics类,调用getGraphics()方法,在GUI界面上绘图,由于java的坐标位于左上角,所以我们可以将圆心移动至面板中心再进行算法进程:
package com.draw;
import javax.swing.*;
import java.awt.*;
import java.util.Scanner;
public class middle extends JFrame {
private Graphics ga;
public middle(){
ga = this.getGraphics();
setBounds(0, 0, 1000, 1000);
setVisible(true);
setBackground(Color.WHITE);
setLayout(null);
setResizable(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
if (ga != null)
paint(ga);
}
public void paint(Graphics g) {
double r = 200;
double x0, y0,t1,t2;
x0 = 0;
y0 = r;
g.setColor(Color.GREEN);
g.drawOval((int)x0,(int)y0,1,1);
double d = 1-r;//构造判别式
while(x0<y0){
if(d<0){
x0 = x0+1;
g.drawOval((int)(x0+300),(int)y0+400,5,5);//绘制1/8圆弧A
g.drawOval((int)(x0+300), (int) ((int)400-y0),5,5);//绘制A圆弧关于y=400的对称
g.drawOval((int)(-x0+300),(int)y0+400,5,5);//绘制关于x=300对称的1/8圆弧B
g.drawOval((int)(-x0+300),400-(int)y0,5,5);//绘制B关于y=400对称
g.drawOval((int)y0+300,(int)x0+400,5,5); //交换x,y使得填满1/4圆C
g.drawOval((int)y0+300,400-(int)x0,5,5); //绘制C关于y=400对称
g.drawOval((int)(300-y0),(int)(x0+400),5,5);//被填满的部分C的对称E
g.drawOval((int)(300-y0),400-(int)x0,5,5);//绘制E关于y=400对称
d = d+2*x0+3;
}else{
x0 = x0+1;
y0 = y0-1;
d = d +2*(x0-y0)+5;
g.drawOval((int)(x0+300),(int)y0+400,5,5);//绘制1/8圆弧
g.drawOval((int)(x0+300), (int) ((int)400-y0),5,5);//绘制1/8圆弧关于y=400的对称
g.drawOval((int)(-x0+300),(int)y0+400,5,5);//绘制关于x=300对称的1/8圆弧B
g.drawOval((int)(-x0+300),400-(int)y0,5,5);//绘制B关于y=400对称
g.drawOval((int)y0+300,(int)x0+400,5,5);//交换x,y使得填满1/4圆C
g.drawOval((int)y0+300,400-(int)x0,5,5); //绘制C关于y=400对称
g.drawOval((int)(300-y0),(int)(x0+400),5,5);//被填满的部分C的对称E
g.drawOval((int)(300-y0),400-(int)x0,5,5);//绘制E关于y=400对称
}
}
}
public static void main(String[] args) {
new middle();
}
}
SpringMVC的工作原理图:SpringMVC流程1、 用户发送请求至前端控制器DispatcherServlet。2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet...
一、google hacking site site:cnblogs.com 毒逆天 intitle intitle:login allintitle allintitle:index of allinurl:forcedownload.php?file= inurl in...
1.x = torch.Tensor(5):zero()Tensor转int:int(x1.cpu().data)2.conf_mask = torch.ones(nB, nA, dim, dim)conf_mask[...]=0除法操作:float((torch.sum(preds == labels.data)).cpu().data)/2Tensor构造的...
安装参考文档:ELK官网:https://www.elastic.co/ELK官网文档:https://www.elastic.co/guide/index.htmlELK中文手册:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.htmlELK中文社区:https://elasticsearch.cn/ELK-API :https://www.elastic.co/guide/en/elasticsearch/client/
项目是微服务,用的是springboot2,启动springboot
原因*.hbm.xml中有二个一样的<property name="名字" /><property name="名字" />MemberGuessCycle类中 映射字段重复 createdTime 父类中已有该属性解决方法改个名字即可...
原 Oracle Flashback 技术 总结https://blog.csdn.net/tianlesoftware/article/details/4677378版权声明: https://blog.csdn.net/tianlesoftware/article/details/4677378 写在前面: 2009年的时候结合网上的资料整理了下Flashback的...
刚才在修改应用上的三个UILabel,后两个UILabel是通过copy第一个UILabel的代码,然后修改实现的。悲剧的是修改名字的时候,有一行代码的名字没有修改,造成第一个UILabel的对齐方式被多次赋值。例如:UILabel * label1 = [UILabel alloc] initWithRect: CGRectMake(10,0, 60,30)]
背景 jQuery想必各个web工程师都再熟悉不过了,不过现如今很多网站还采用了很古老的jQuery版本。其实如果早期版本使用不当,可能会有DOMXSS漏洞,非常建议升级到jQuery 1.9.x或以上版本。前段时间我就主导了这件事情,把公司里我们组负责的项目jQuery版本从1.4.2升级到了jQuery 1.11.3。jQuery官方也为类似升级工作提供了jQuery Mig...
import asynciofrom aiohttp import TCPConnector, ClientSessionimport pyecharts.options as optsfrom pyecharts.charts import Graph"""Gallery 使用 pyecharts 1.1.0参考地址: https://echarts.baidu.com/examples/editor.html?c=graph-npm目前无法实现的功能:1、暂无"""...
今天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了所有的数字化信息,不论是一段程序,一封email,一部电影都是用一连串的1和0进行编码的;是他们发现了我们可以利用一个预先编写好的程序控制机器,并使之完成我们期望它完成的动作。建议大家在心里默念三遍他们的名字,以示仰慕。当然,如果让你们带着现在的知识回到他们的那个时代,那
1.argmaxtorch.argmax(input, dim, keepdim=False) → LongTensor返回指定维度的最大值的索引。2.示例b = torch.randn(4, 5)torch.argmax(b, dim=0)Output:# btensor([[-2.2276, 0.9573, -1.9554, 0.8877, 0.7543], ...