我有两个正方形,S1 =(x1,y1,x2,y2)和S2 =(a1,b1,a2,b2)
我正在寻找A*S1 = S2的A变换矩阵
据我所知,A是一个仿射3x3矩阵,所以我有9个未知值.
我该如何计算这些值?
谢谢,最好,Viktor
我一直在尝试围绕指定的中心点旋转多边形,但我尝试过的所有东西都失败了.我用谷歌搜索过,发现很多,但没有一个似乎工作.
我试图复制的结果与第一个答案类似
不同之处在于我需要多边形实际旋转,只是以一定角度绘制它不会切割它.(这是简单的物理建模)
这是我的代码,我尝试过几种不同的方法
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JPanel;
public class rotationPanel extends JPanel {
private static final int SIZE = 500;
private static final Shape outline = makeShape();
Point p;
Point p2;
Point p3;
Point p4;
Point[] points;
Point[] npoints;
Point center;
Polygon poly;
double angle;
Timer timer;
long start;
long sleepTime;
static int runTime;
public rotationPanel(){
setSize(500,500);
setBackground(Color.DARK_GRAY);
setVisible(true);
runTime = 100; //ms
start …
Run Code Online (Sandbox Code Playgroud) 我试图用java awt绘制一个矩形,并通过鼠标拖动使其与鼠标光标一起旋转.
当我测试它时,矩形旋转速度非常快.
我的矩形():
private Rectangle2D rec = new Rectangle2D.Float(x0,y0,w,h);
AffineTransform recTrans = new AffineTransform();
int pivotX = x0+w/2, pivotY = y0+h;
// (0,0) is at the top-left corner
Run Code Online (Sandbox Code Playgroud)
我的paintComponent():
public void paintComponent(Graphics g) {
Graphics2D graph = (Graphics2D) g;
graph.translate(x,y);
graph.transform(recTrans);
graph.fill(rec);
graph.setColor(Color.blue);
graph.draw(rec);
}
Run Code Online (Sandbox Code Playgroud)
我的鼠标拖动事件:
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
previousX = e.getX();
previousY = e.getY();
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
currentX = e.getX();
currentY = e.getY();
double angle1 = …
Run Code Online (Sandbox Code Playgroud) Q1.我想将点(x1,x2,x3)与点(y1,y2,y3)匹配.getAffineTransform
无论这些点的顺序是什么,函数总是返回相同的变换矩阵吗?
Q2.如果我知道这些点只能通过旋转和平移进行变换而不进行任何缩放,那么从返回的变换矩阵中删除缩放的最简单方法是什么getAffineTransform
.
有没有一种简单的方法可以在Mac OSX应用程序中旋转NSImage?或者只是使用Swift设置从纵向到横向的方向?
我正在玩CATransform3DMakeAffineTransform,但我无法让它工作.
CATransform3DMakeAffineTransform(CGAffineTransformMakeRotation(CGFloat(M_PI) * 90/180))
Run Code Online (Sandbox Code Playgroud)
这是我第一次使用转换.所以请耐心等待我:)也许我正在采取错误的方法......
有人能帮帮我吗?
谢谢!
我正在尝试CALayer
使用以下代码将仿射转换应用于:
var myLayer:CALayer!
myLayer.affineTransform = CGAffineTransformMakeRotation(0)
Run Code Online (Sandbox Code Playgroud)
但我遇到了错误
无法分配给属性:'myLayer'是不可变的.
有什么必要解决这个问题?