Hallo.
Es sollte doch nur ein kleiner test werden, wurde aber leider nichts.
naja ich hab versucht mal von allen matrizen sinusen und cosinusen wegzudenken und eine drei dimensionale
rotation (wonach ich in einem anderen thread gefragt hatte) nachzubauen.
Im moment läuft es nur im bereich von 0 bis 90 grad, aber seht selbst in der jar. Das Problem ist…
es sieht einfach nur äähmm… scheisse aus.
Ich frag mich nur warum das so extrem schlecht geworden ist. weiss einer wie man
das nach diesem prinzip und meinem code verbessern könnte?
Vielen Dank für Ratschläge!
Und bitte seht euch die jar an, die man hier downloaden kann,es sieht wirklcih schlechter aus als man vielleicht denkt.
Hier ist der code für die “rotation”:
code…
[spoiler]```public BufferedImage rotate(BufferedImage sourceImage, double angle){
double imageWidth = sourceImage.getWidth();
double imageHeight = sourceImage.getHeight();
double widthPerAngle = imageWidth / 90;
double heightPerAngle = imageHeight / imageWidth;
double newWidth = imageWidth - widthPerAngle * angle + 1;
BufferedImage outputImage = new BufferedImage(sourceImage.getWidth(), sourceImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
BufferedImage bufferImage = new BufferedImage(sourceImage.getWidth(), sourceImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
BufferedImage line;
Graphics2D g = (Graphics2D) outputImage.getGraphics();
for(int i = 0; i < outputImage.getWidth(); i++){
double lineHeight = imageHeight - i * heightPerAngle * angle / 100;
line = sourceImage.getSubimage(i, 0, 1, sourceImage.getHeight());
g.drawImage(line, i, ((int) imageHeight - (int) lineHeight) / 2, 1, (int) lineHeight, null);
}
bufferImage.getGraphics().drawImage(outputImage.getSubimage(0, 0, outputImage.getWidth(), outputImage.getHeight()), 0, 0, null);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.CLEAR));
g.fillRect(0, 0, outputImage.getWidth(), outputImage.getHeight());
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
g.drawImage(bufferImage, 0, 0, (int) newWidth, outputImage.getHeight(), null);
g.dispose();
return outputImage;
}```[/spoiler]