libgdx отрисовка под любым углом, нужны идеи

362
24 марта 2017, 23:17

Вопрос состоит в том, как рисовать широкие полосы от круга 1 до круга 2 в любых координатах(иными словами под углом)

Я рисую вот такую полосу, от круга 1 до круга 2, сейчас я могу рисовать только по прямой

где getX и getY расположение координаты круга 1(на котором число), x2,y2 координаты круга 2

Белые полосы и фиолетовую полосы рисую растягивая квадрат 1х1 пиксель(piece)

batchColor.begin();
    batchColor.setColor(colorR,colorG,colorB,colorA);
    batchColor.draw(piece,getX(),getY()-getRadius(),x2-getRadius()-getRadius(),y2);
    batchColor.setColor(Color.WHITE);
    batchColor.draw(piece,getX(),getY()+getRadius(),x2-getRadius()-getRadius(),-6);
    batchColor.draw(piece,getX(),getY()-getRadius(),x2-getRadius()-getRadius(),6);
    batchColor.end();
Answer 1

В Java это можно сделать с помощью Polygon.

Вот пример:

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Test extends Frame {
public Test() {
    super("Java 2D Example01");
    setSize(400, 300);
    setVisible(true);
    addWindowListener(new WindowAdapter() {
                          public void windowClosing(WindowEvent e) {
                              dispose();
                              System.exit(0);
                          }
                      }
    );
}
public static void main(String[] args) {
   new Test();
}
public void paint(Graphics g) {
    Polygon poligon = new Polygon();
    poligon.addPoint(150, 150);
    poligon.addPoint(185, 120);
    poligon.addPoint(250, 200);
    poligon.addPoint(220, 230);
    poligon.addPoint(150, 150);
    ((Graphics2D) g).fill(poligon);
 }
}

Вот пример для libgdx:

package com.gamename;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.*;
public class Game implements ApplicationListener {
private PolygonSprite poly;
private PolygonSpriteBatch polyBatch;
public void create () {
    PolygonRegion polyReg = new PolygonRegion(new TextureRegion(createTexture()),
            new float[] {
                    150, 150,
                    185, 120,
                    250, 200,
                    220, 230,
                    150, 150
            });
    poly = new PolygonSprite(polyReg);
    poly.setOrigin(100, 100);
    polyBatch = new PolygonSpriteBatch();
}
public void render () {
    polyBatch.begin();
    poly.draw(polyBatch);
    polyBatch.end();
}
public void resize (int width, int height) {}
public void pause () {}
public void resume () {}
public void dispose () {}
private Texture createTexture() {
    Pixmap pix = new Pixmap(1, 1, Pixmap.Format.RGBA8888);
    pix.setColor(0xDEADBEFF);
    pix.fill();
    return new Texture(pix);
}
}

Класс для вызова с десктопа:

package com.gamename;
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
public class DesktopGame {
public static void main (String[] args) {
    new LwjglApplication(new Game(), "Game", 480, 320, false);
}
}
READ ALSO
Проверка работы X-сервера

Проверка работы X-сервера

Периодически зависает X-серверКаким образом можно проверить завис он или работает? Проверку необходимо реализовать на python, но и не откажусь...

229
Не могу понять, почему не работают maven-плагины

Не могу понять, почему не работают maven-плагины

Всем приветНа работе поставил IntellijIDEA, maven, jdk

258
Управление выводом дробной части double в Java

Управление выводом дробной части double в Java

Как вывести дробную часть double в Java? Что бы число d было равно 17890 а не 178

407
Как наложить на гистограмму кривую?

Как наложить на гистограмму кривую?

Построил гистограмму используя библиотеку jfreechart, сейчас возникла необходимость наложить на нее кривуюНикак не могу сообразить, каким образом...

308