「六边形网格java」六边形网格生成
本篇文章给大家谈谈六边形网格java,以及六边形网格生成对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、如何用java GUI绘制六边形
- 2、谁能帮我归纳一下中心地理论要点啊?
- 3、如何绘制六边形格点图
- 4、用java写一个六边形
- 5、求解一个java程序,分别选择圆 正方形 正六边形之后输入 圆的半径、正方形边长和正六边形的边长,计算面积
如何用java GUI绘制六边形
用路径来画 一般用GeneralPath类来实现,给出paintComponent方法的代码,供参考
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
//正六边形数据
float r = 100; //边长
float[] x1 = {0, 0.5f*r, 1.5f*r, 2*r, 1.5f*r, 0.5f*r};
float[] y1 = {0.866f*r, 1.732f*r, 1.732f*r, 0.866f*r, 0, 0};
g2d.translate(100, 100);
GeneralPath p = new GeneralPath();
p.moveTo(x1[0], y1[0]);
for (int i = 1; i y1.length; i++) {
p.lineTo(x1[i], y1[i]);
}
p.closePath();
g2d.draw(p);
}
谁能帮我归纳一下中心地理论要点啊?
一、中心地理论——六边形服务网格
每一个中心地都有一个服务范围,但相邻同级中心地的服务范围之间的关系怎样?我们可用六边形服务网格来解释:
我们假设在一理想化的均质平原上,各种因素都相同,以距离最近为原则,将相同等级的中心地进行“分割”,以几何的方法,分到最后为止,可看出:同级中心地的服务范围有围绕中心地呈正六边形分布的趋势,中心地位于六边形服务范围的正中间。以距离最近为原则,每个六边形内的居民寻求消费时,一般选择位于这个六边形内的中心地,而不是其他中心地。
多个相同级别中心地服务范围在空间上的分布构成蜂窝状网格,由多个正六边形组成。
在一个市场区域中,各级中心地服务范围的形态均呈现为六边形,但因各级中心地的门槛人口和服务范围不同,六边形的大小也不相同。高级中心地服务范围大,彼此相距较远,六边形面积大,数目少;低级中心地服务范围小,彼此距离较近,六边形面积小,数目多。不管级别的高低,同一级别的六边形之间是相互排斥的,就整个地区而言,中心地及其服务范围如同一个金字塔,塔顶是最高级的中心地,个数最少,而构成塔基的是数量巨大的最低级中心地。
二、中心地理论的应用
正六边形服务范围只是一种假想的模式,它是现实生活的一种抽象。实际上,由于多种原因,中心地的服务范围只是或多或少类似于六边形形态。
此外,许多国家和地区已将中心地理论成功地运用来指导区域规划,城市建设和商业网点的布局。
北京是一座历史古城,北京城商业网点的长期发展变化就体现了中心地的思想。其中同级商业网点的布局,其服务范围大致呈现为正六边形。指导学生认真读图2.9,分析北京城的旧城内与建国后新建的商业中心布局,说明其满足了中心地理论要求的商业中心布局是合理的。
荷兰人在围海造田得来的圩田上规划居民点时,也成功地应用了中心地理论,但它并没有完全按六边形嵌套的模式来布置,只是接近于六边形。指导学生认真读图2.10,和北京城的商业网点布局相比较,让学生了解荷兰圩田上设置居民点的情况:政府在圩田上规划的是一个居民点体系,由三个级别组成,级别越高的居民点个数越少,不同级别居民点人口规模不同,需求也不相同,居民点可提供的服务功能也就不同;在安排各级居民点的空间位置时同级居民点之间的距离大致相当,高级别的居民点则布置在较低级别居民点的中间。
总之,中心地理论的正六边形服务范围的形成是有其特定条件的,在实际中运用时应结合具体问题具体分析。例如,圩田上的居民点的规划就只是应用了中心地理论的思想和规律并没完全按六边形嵌套的模式来布置,每一个高级居民点所服务的低一级的居民点不是六个,且每个居民点服务范围也不是正六边形。
如何绘制六边形格点图
相对于平常的网格图,六边形格点图有时更方便于定位,因此常常被用做游戏的地图中。同时,蜂窝也大抵由六边形组成,因而将六边形格点图也常称作为蜂窝图,该格点运用在装饰上也十分的美观。目前,很少有大小、格式符合自己所需的蜂窝图模板,运用各类设计软件制作也不方便,因此小编在这里为大家推荐一个十分简单便捷的方法。
工具/原料
draw hex gird
方法/步骤
1
网页搜索draw hex grid软件,下载。
下载之后你会发现,软件仅仅由一两个文件组成,十分精巧便捷。
2
打开软件(如果无法正常运行请使用管理员身份运行),你需要填写你所需要的六边形格点纸的格式(输入数据后按回车)。内容分别如下:
1.格子每边的像素大小,输入数字
2.格子构筑是尖端朝上还是横边朝上,分别输入h 或者 v
3.输入地图每行的格数
4.输入地图每列的格数
5.格子中间是不是有点、没有点,或者有十字,分别输入d,n或者c
6.选择是否打印格子的编号
7.选择编号字体,默认为MS Serif
8.选择字体大小
9.选择字体格式,纯数字还是夹杂字母
10.选择编号在上部还是下部
11.选择格边的粗细
输入完成后再次按回车,软件即开始生成图片文件(格式为bmp)
3
不用多少时间,格点纸便会生成并在所示地址自动保存。
END
附:格点纸边框颜色太深怎么办?
1
由于软件只提供了格点纸边框的粗细选项,并不能调整其它参数,如果你有更多需求的话,可以通过后期解决。
2
打开任何可以对图像进行编辑的软件,例如Word。微调其图片亮度(通常调高到80%),格点边框便能变浅了。
用java写一个六边形
public class test
{
public static void main(String[] args)
{
for(int i=0;i4;i++)
{
for(int n=0;n4-i;n++)
{
System.out.print(" ");
}
for(int j=0;j4+i*2;j++)
{
System.out.print("*");
}
System.out.println();
}
for(int i=3;i0;i--)
{
for(int n=0;n5-i;n++)
{
System.out.print(" ");
}
for(int j=0;ji*2+2;j++)
{
System.out.print("*");
}
System.out.println();
}
}
}
求解一个java程序,分别选择圆 正方形 正六边形之后输入 圆的半径、正方形边长和正六边形的边长,计算面积
这是我刚接触JAVa时写的,想法一样,可以参考一下。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Shape_page extends WindowAdapter implements ActionListener,ItemListener{
private JFrame frame;
private Panel p,p1,p2;
private JLabel title;
private JCheckBox area,perimeter;
private ButtonGroup bg;
private JRadioButton b,b1,b2;
private ButtonGroup bg1;
boolean isSelect=false;
static String index="";
public Shape_page(){
Font s=new Font("宋体",Font.BOLD,16);
UIManager.put("Label.font",s);
//UIManager.put("JRadioButton.font",s);
UIManager.put("Button.font",s);
frame=new JFrame();
p=new Panel();
p1=new Panel();
p2=new Panel();
title=new JLabel("图形面积与周长计算器");
area=new JCheckBox("面积");
perimeter=new JCheckBox("周长");
b=new JRadioButton("三角形");
b1=new JRadioButton("圆形");
b2=new JRadioButton("矩形");
b.addActionListener(this);
b1.addActionListener(this);
b2.addActionListener(this);
area.addItemListener(this);
perimeter.addItemListener(this);
bg=new ButtonGroup();
bg.add(area);
bg.add(perimeter);
bg1=new ButtonGroup();
bg1.add(b);
bg1.add(b1);
bg1.add(b2);
frame.setLayout(new GridLayout(3,1));
frame.addWindowListener(this);
frame.add(p);
frame.add(p2);
frame.add(p1);
p.add(title);
p1.add(b);
p1.add(b1);
p1.add(b2);
p2.add(area);
p2.add(perimeter);
frame.setSize(300,200);
frame.setVisible(true);
frame.setResizable(false);
}
public void actionPerformed(ActionEvent e){
if(index.isEmpty()){
JOptionPane.showMessageDialog(frame,"必须要先选择计算的类型");
return ;
}
String str=e.getActionCommand();
if(str.equals("三角形"))
new Triangle();
else if(str.equals("圆形"))
new Circular();
else if(str.equals("矩形"))
new Rectangle();
}
public void itemStateChanged(ItemEvent e) {
JCheckBox check=(JCheckBox)e.getItem();
String str=check.getText();
if(str.equals("面积"))
index="面积";
else if(str.equals("周长"))
index="周长";
}
public void windowsClosing(WindowEvent e){
System.exit(0);
}
public static void main(String[] args) {
new Shape_page();
}
}
abstract class Shape{
public abstract double getArea();
public abstract double Perimeter();
}
class Circular extends Shape implements ActionListener{
private double IP=3.141592654;
private double r;
private JFrame frame;
private Panel p,p1,p2,p3;
private JLabel title,output;
private JLabel jl,jl1;
private JButton right,Cancel;
private JTextField t;
Circular(){
frame=new JFrame();
frame.setLayout(new GridLayout(4,1));
title=new JLabel("圆形"+Shape_page.index+"计算器");
output=new JLabel("所输入的圆形的"+Shape_page.index+"为");
right=new JButton("确定");
Cancel=new JButton("取消");
jl=new JLabel("圆的半径:");
jl1=new JLabel("a");
t=new JTextField(4);
p=new Panel();
p1=new Panel();
p2=new Panel();
p3=new Panel();
p.add(title);p1.add(jl);
p1.add(jl1);p1.add(t);
p2.add(output);p3.add(right);
p3.add(Cancel);
right.addActionListener(this);
Cancel.addActionListener(this);
frame.add(p);
frame.add(p1);
frame.add(p2);
frame.add(p3);
frame.setSize(450,250);
frame.setVisible(true);
frame.setResizable(false);
}
public double getArea(){
return IP*r*r;
}
public double Perimeter(){
return 2*IP*r;
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==right){
r=Double.parseDouble(t.getText());
if(Shape_page.index.equals("面积"))
output.setText("所输入的形圆的面积为"+String.valueOf(getArea()));
else
output.setText("所输入的圆形的周长为"+String.valueOf(Perimeter()));
}
else
t.setText("");
}
}
class Triangle extends Shape implements ActionListener{
private double a1;
private double a2;
private double a3;
private JFrame frame;
private Panel p,p1,p2,p3;
private JLabel title,output;
private JLabel jl,jl1,jl2,jl3;
private JButton right,Cancel;
private JTextField t,t1,t2;
Triangle (){
frame=new JFrame();
frame.setLayout(new GridLayout(4,1));
title=new JLabel("三角形"+Shape_page.index+"计算器");
output=new JLabel("所输入的三角形的"+Shape_page.index+"为");
right=new JButton("确定");
Cancel=new JButton("取消");
jl=new JLabel("三角形的三条边:");
jl1=new JLabel("a");
t=new JTextField(4);
jl2=new JLabel("b");
t1=new JTextField(4);
jl3=new JLabel("c");
t2=new JTextField(4);
p=new Panel();
p1=new Panel();
p2=new Panel();
p3=new Panel();
p.add(title);p1.add(jl);
p1.add(jl1);p1.add(t);
p1.add(jl2);p1.add(t1);
p1.add(jl3);p1.add(t2);
p2.add(output);p3.add(right);
p3.add(Cancel);
right.addActionListener(this);
Cancel.addActionListener(this);
frame.add(p);
frame.add(p1);
frame.add(p2);
frame.add(p3);
frame.setSize(450,250);
frame.setVisible(true);
frame.setResizable(false);
}
public boolean isTriangle(){
if(a1+a2a3a1+a3a2a2+a3a1)
return true;
else
return false;
}
public double getArea(){
double a=(a1+a2+a3)/2.0;
double area=a*(a-a1)*(a-a2)*(a-a3);
return Math.sqrt(area);
}
public double Perimeter(){
if(isTriangle())
return a1+a2+a3;
else
return 0;
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==right){
a1=Double.parseDouble(t.getText());
a2=Double.parseDouble(t1.getText());
a3=Double.parseDouble(t2.getText());
if(!isTriangle())
output.setText("所输入的数值不能构成三角形");
else{
if(Shape_page.index.equals("面积"))
output.setText("所输入的三角形的面积为"+String.valueOf(getArea()));
else
output.setText("所输入的三角形的周长为"+String.valueOf(Perimeter()));
}
}
else{
t.setText("");
t1.setText("");
t2.setText("");
}
}
}
class Rectangle extends Shape implements ActionListener{
private double a1;
private double a2;
private JFrame frame;
private Panel p,p1,p2,p3;
private JLabel title,output;
private JLabel jl,jl1;
private JButton right,Cancel;
private JTextField t,t1;
Rectangle (){
frame=new JFrame();
frame.setLayout(new GridLayout(4,1));
title=new JLabel("矩形形"+Shape_page.index+"计算器");
output=new JLabel("所输入的矩形的"+Shape_page.index+"为");
right=new JButton("确定");
Cancel=new JButton("取消");
jl=new JLabel("矩形的长");
jl1=new JLabel("宽");
t=new JTextField(4);
t1=new JTextField(4);
p=new Panel();
p1=new Panel();
p2=new Panel();
p3=new Panel();
p.add(title);p1.add(jl);
p1.add(t);p1.add(jl1);
p1.add(t1);
p2.add(output);p3.add(right);
p3.add(Cancel);
right.addActionListener(this);
Cancel.addActionListener(this);
frame.add(p);
frame.add(p1);
frame.add(p2);
frame.add(p3);
frame.setSize(450,250);
frame.setVisible(true);
frame.setResizable(false);
}
public double getArea(){
return a1*a2;
}
public double Perimeter(){
return 2*(a1+a2);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==right){
a1=Double.parseDouble(t.getText());
a2=Double.parseDouble(t1.getText());
if(Shape_page.index.equals("面积"))
output.setText("所输入的矩形的面积为"+String.valueOf(getArea()));
else
output.setText("所输入的矩形的周长为"+String.valueOf(Perimeter()));
}
else
t.setText("");
}
}
六边形网格java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于六边形网格生成、六边形网格java的信息别忘了在本站进行查找喔。
发布于:2022-12-14,除非注明,否则均为
原创文章,转载请注明出处。