Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
I have a cube and 4x4 transformation matrix Cube is rotated randomly I need to find the nearest face of cube regarding to camera and rotate the cube by aligning that face to the camera.
How can I do that. Thanks in advance.
Without getting into a bunch of math, here is a strategy.
Identify the face nearest to the camera under some criteria. Two possible criteria for determining the closest face are:
a. Finding the closest face based on the Euclidian distance between the face centroid and the camera's centroid.
b. Determine which face normal vector is most close to parallel to the camera view vector and has a direction that is opposite to the view vector. This assumes that the face normal vectors point outwards.
Once you've identified the 'closest' face, determine the inverse transform to that will align the face normal with the camera view vector. Any decent 3D computer graphics text will serve as a reasonable guide.
Related
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
Contex: I'm trying to make a 2d physic engine, i'm starting to think about how to draw shapes that i could rotate. So i thought i could draw irregular shapes by drawing lines from several equations of straight. Now i have some doubts:
There is a easy way of draw a straight by giving an equation?
There is a library that can help me to handle equations?
The reason to use equations instead of using functions to draw lines from x1,y1 to x2,y2 is that i want the equations to calculate collisions between shapes.
Do you know a book or an article that could help me pull this off?
I'm gonna work in java, for now this is just an idea.
Not an expert in this field but quick search on java 2d engine collision engine returns dyn4j library on the first page. You can explore their examples and consequently the implementation code.
https://github.com/wnbittle/dyn4j
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
QUICK RECAP OF THE PROJECT:
I'm making a car that would drive itself in between the obstacles of which picture will be taken by your phone. The picture should then be cropped to the size of the "area of movement" or the area where car can move. That should have been done automatically. In my case I’d do it like this:
Before you would take picture of the "obstacle map", you would have to put a paper sheet on the ground, so the program would recognize the size of the area/the way image should be transformed to be "perpendicular" to the ground.
In program you would mark the area where car can move and it would crop it. Then it would automatically transform the selected area to be as "perpendicular" as possible, so the obstacle map would be good enough for the car to move in it as it would be an obstacle map.
Then I have 2 options: either to automate obstacle recognition or to make it manual. If I would automate it, I would have to use some sort of OpenCV obstacle recognition. Else id just make a simple program for marking obstacles. After that you would mark a point, where the car should move to and it would calculate the most optimal path with A algorithm. This algorithm only gives the points where the car should move, so I connected with some professors in my school and they are now doing some help with steering of car and calculating the right angle the car should steer to come to certain location.*
I have 2 questions, both connected with BufferedImage.
Two questions back in the past, I asked how to get a sub image that is defined by 4 random points. I got no answers for doing that so I did it myself, but I know that this method is VERY INEFFICIENT and I'd like to know how can it be done better?
My second question is about matrix transformation. I have already been discussing about that and got this code which is basically a modded version of this one. The code is limiting me to the size of the input bufferedimage and i'd like to know how can I "remove" this limit, because in some cases the image needs to be upscaled, but the code keeps cropping it. Also I’d like to have some sort of AA (Anti Aliasing) on it, because the transformed image just looks weird/pixelated.
EDIT: In first question's code, there is a method line(Point p1, Point p2) in class Place_2D which basically creates an arraylist of points connecting 2 points in place, creating a line.
Antialiasing will be achieved by a better sampling scheme than nearest-neighbor. You will get a nice improvement by switching to bilinear interpolation.
Every back-projected point falls between four pixels. The fractional part of the coordinates allow you to compute mixing weights to be assign to the color values of these four pixels.
If the scaling factor is small (transformed image being less than a quarter of the original), you can blur the image beforehand to avoid other artifacts.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 4 years ago.
Improve this question
Is there a way to add an arrow head to a cubic curve? I can think of a very tedious way to do it (adding a shape, and control its direction, etc). But I am hoping there is a cleaner solution.
I seriously doubt that this is a built-in functionality in javafx, and your best bet would be to make a simple polygon arrow head and size it to the size you want, and then 'anchor' the middle of one of the sides to the end of the spline. If you make an equilateral triangle you'll save yourself some sadness. Also, to make sure the direction is correct all you'd have to do is to make sure that the part of the line connecting to your triangle is perpendicular to the base of the triangle, then it'll always be pointing in the 'correct' direction.
An example of the polygon creation for a triangle would be:
Polygon polygon1 = new Polygon(new double[]{
45 , 10 ,
10 , 80 ,
80 , 80 ,
});
That makes a a basic red one. :) good luck!
I found another simpler workaround (2 steps):
Add a polygon shape (triangle) in the node which is supposed to
receive a curve. Have this triangle place in the location where the
curve's end point will be set.
Then, set this triangle to visible when a curve is drawn and to not
visible when the curve is deleted.
It is not perfect, but look good and does the job!
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
I would like to create a wind rose similar to this :
The goal is to be able to update the green area based on information from a database.
The green area should take in two degrees and then create the green area between them.
Where could i start looking for a soulution ?
I have done such a compass for ios.
Besides custom views, you should be familiar with polar coordinates:
A point then is defined by (r, phi) instead of (x,y).
You need that all the time, you loop around the rose iterating with phi from 0 to 360, in steps. When you have the drawing coordinates in polar, you have to transform to x,y and draw it.
Further you will need AffineTransformations to scale the rose from a given pixel width, and height to a neutral -1, 1 range. Then drawing is easier.
Look at how to create a custom view : http://developer.android.com/training/custom-views/index.html
And keep in mind that you will have to optimize your drawing code : no object creation and rely as much as possible on java graphics primitives.
Happy coding, that's a very fun android development ahead, but a bit complex for novices.
Oh, and by the way, here you might be interested in using PorterDuff mode for translucency.
As has been mentioned, you'll likely want to implement a custom view.
In particular though, you'll want to divide the rendering into two. The background static image and the foreground dynamic image.
The foreground image could be generated using the Canvas class. It's quite easy to use once you get your head around it. The idea is that you'll be generating a bitmap using the canvas on whcih you draw. See the docs for more details:
http://developer.android.com/guide/topics/graphics/2d-graphics.html
For the actual rendering, you can use the drawArc method in the Canvas class:
public void drawArc (RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)
http://developer.android.com/reference/android/graphics/Canvas.html#drawArc(android.graphics.RectF, float, float, boolean, android.graphics.Paint)
All the best!
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
I am just processing an image, looking at things such as colour and contrast. How ever my issue is analysing the complementary colours in the image and trying to do this efficiently.
Firstly I have got the pixel rgb. I have then converted to HSV and increase the hue and return to rgb, hence obtaining the complementary colour. I am then looking at its closet neighbours to see if any of these are complementary colours. How ever given these are pixels, it is rare one would find the central pixel to be a complementary - hence I do not feel this is very efficient.
Or another idea... to segment the image in accordance to colour regions and work out the distance from one region to another if there is a region with the complementary colours.
Any ideas and any ideas on how to efficiently code this?
Thanks
So I eventually worked out roughly how to do this, either by a very slow way or a slightly faster way:
segment image into colour regions
calculate complementary of colour region by adding 0.5 to the hue of the colour
look at closest neighbours to complementary aswell, as we may not have exact complementary colour present
calculate euclidean distance from the segment to the complementary segment (if this exits) and calculate 1/ED - this will be 1 if close and nearer to zero if far away, so acts like a weight.
calculate proportions in segment to weight pairing of complementary colours accordingly.
Otherwise
As opposed to segments do this for each pixel to every other pixel