How Can I Make A Symmetrical Curve I Can Subdivide?

John B

0
Messages
111
I'm trying to make curves that fit on a grid. No problem with a 90° curve, but I can't get the 45° curves to work.

In the attached image, on the left is a 90° curve, which occupies a 4 x 4 section of the grid (indicated by the gray dots). The red dots are for alignment. My problem is making a 45° curve that fits on the same grid. I've tried wraps and sweeps and splines—a cylinder wrap was used for the examples in this image, it's about the best I've been able to do. I've tried starting with the 90° curve and cutting it in half down the middle (shown in the image), and I've tried starting with the 45° curve. Also note the blue dot in the center of the 90° curve — the curve must pass through this point to make it align with the grid. Apparently, the 90° curve is not symmetrical, since dividing it in half does not result in a piece that can be duplicated and fit together like the original 90° curve (can't flip it over, only rotate it). These are track pieces to be used in a driving game.

Any ideas or suggestions on how to make a 45° curve that matches the 90 and aligns with the grid? Is this even possible?

Curve Example.jpg
 
Last edited:
There‘s a circle script in the script section of this forum - I believe it‘s from user Herb (not in fron of my Mac right now) - that will let you draw arcs+circles of any kind and size.
If you want it polygon based the cylinder has all properties needed and can converted into splines as well via existing Poly-to-Spline script.
 
* The problem will be that a curve wich passes through the coordinates (0;4), (3;3) and (4;0) is not a quarter circle. I suggest starting with a hand.knitted spline (with two segments) where you can position the end points and the middle point precisely. Fiddling with the tangents will eventually get you there.
 
You can scale the 2 handles symmetrically from the corner:
That's essentially what I did for the 90° curve, but with a cylinder wrap. The problem is that a curve that passes through the grid points is not symmetrical, the two half segments are not identical. Take your curve, divide it in half, and see if the two segments are the same.
 
Last edited:
A 90 degree circular curve on a 4x4 grid will not pass through
any other points on that grid except the first and last.

Screenshot 2025-01-07 at 10.36.57 PM copy.jpg
 
A 90 degree circular curve on a 4x4 grid will not pass through
any other points on that grid except the first and last.
Yes, that's my problem, how to create a 90° curve, with two equal 45° segments, that passes through a grid point. Doesn't have to be perfectly circular. I'm starting to think it's not possible.
 
If you don't care if it's circular that seems possible.

I did it with a sweep, not sure if I have the right idea.

Screenshot 2025-01-07 at 11.10.37 PM copy.jpg
 

Attachments

  • CurveSub.jas.zip
    17.1 KB · Views: 14
* Well, it can´t be circular as the curvature of the arc is not constant. In a normal circle the curvature is the reciprocal of the radius. What you need here is often called a squircle, basically a square with rounded corners. This can be a superellipse, eg quntic, or similar. If you need precise formulae, such are available on the web, eg the en:Wikipedia,
* As has been suggested, the easy method is a spline with a horizontal / vertical handle at the start / end points and a 45° degree tangent at the mid-point. This is definitely symmetrical unless the tangents on the midpoint are "unbalaced".
* If you use a sweep or an extrusion (plus shell) should give the same result.
 
This might give you the idea of my approach:
Few steps:
1. Draw 3 spline nodes change the spline to linear.
2. Align the points with snapping to the given 3 points on the plane
3. Change back to Bézier-Spline
4. Adjust 2 handles with snapping and the one in the middle to „smooth interpolation“ which is symmetrical
5. Select and delete the bottom node
6. Copy&paste the curvature segment and mirror it
7. Select both segments - copy&paste and rotate 2 times to make a full circle
Alternatively:
a. Generate Rectangle Spline object
b. Adjust size to 0,8x0,8 based on the grid
c. Set Bevel type to „round“ and the Bevel Radius to 0,31415
Screencast:
 
Last edited:
I dońt get why you state it´s not symmetrical.
Maybe this will demonstrate. I took the file posted by ZooHead, and split the 90° curve in half (a 45° curve is what I'm trying to make). I made a copy of the lower half and moved it up next to the top half of the curve. The two are not the same. There is no way to put 2 of those 45° curves together to match the 90° curve. You can see by the uneven spacing of the segments in the 45° curve that it is not symmetrical. It's more curved on the left and straighter on the right.
Curve Problem.jpg
 
Hello,

John B, the other comments show that the laws of math stipulate that a _circle_ can not do what you want. BUT, if you can accept a curve that is a non-circle, then you can get a curve going through the desired points.

The reason your drawing “shows” that the two curves do not “match” is that you did not flip the curve to mirror it. You only moved it from the below the 45° line to above it.

To show that the curves are indeed the same, you need mirror the curve along the 45° axis. The end with the closely spaced rectangles will then be adjacent to the 45° line and the end with the wider spaced rectangles will be at the 90°.

This help?

cheers,
gsb
 
I'm starting to think it's not possible.
Probably so.
Once you use perfectly symmetrical parts (1/8 of a circle), the connections won't match.
Or can you get away with the length being even and only the endings being tilted differently to match?

screenshot.jpg


EDIT:
I made a copy of the lower half and moved it up next to the top half of the curve. The two are not the same.
That means you want not symmetry but identity, to do the trick with two parts being the same instead of being mirror copies.
If the construct is tubular, you can do it with identical parts but you will have to flip one piece over (upside down = symmetrical transformation) before connecting them.
But if the parts can only be shifted not flipped it won't work.
 
Last edited:
A circle can't hit those points, but a torus with N1 set to 0.83 comes pretty darn close.
SquircleTorus.jpg
You just can't create a circle which hits those points ( 75% of X, 75% of Y ) from 8 perfectly symmetrical curve segments. You almost could, if the midpoint of the curve was ( 70% of X, 70% of Y ) simply because the sin of 45° AND the cos of 45° is 0.70710678 .
 
@MonkeyT unfortunately one 8th is just equal 4 other segments but not all 8.

I misunderstood the task the whole time. The way I have tried to solve it now is to create 1 symmetrically segment so that 8 of them build a kind of circle. So no mirroring as before.
Here is a schematic drawing that hopefully gives some insight into my attempt at a solution:
The SEGMENT.jpg
 
* This may be :devilish: lateral thinking for the advanced, but I think that Frank B has shown a valid starting point. It is a bit like slicing a pizza with an off-centre intersection point of the linear cuts, dumping the seven useless bits of pizza and assembling a super-pizza out of 8 wonky (but identical) slices.
* I guess that there will be some fiddling and tweaking the tangents at the end of the "arc" to avoid kinks, but I feel that this may work. Great stuff, Frank Beckmann!

PS: Momentarily I have no time to experiment, but I will catch up and test Frank´s idea...
 
John B, the other comments show that the laws of math stipulate that a _circle_ can not do what you want. BUT, if you can accept a curve that is a non-circle, then you can get a curve going through the desired points.

The reason your drawing “shows” that the two curves do not “match” is that you did not flip the curve to mirror it. You only moved it from the below the 45° line to above it.
These are pieces of a track in a game. They can only be rotated, not flipped. Can't flip the track piece upside down. That's the problem.
 
Back
Top