-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fillets at intersections #83
Comments
A workflow is proposed below to process and generate intersections with fillets. Let’s consider an example on the image below. The roadway to the left is composed of the sequence A PML style of the intersection is queried for the fillet radius. Based on the fillet radius the parameters of the fillet are calculated, namely, the start point, the end point, the center of the arc and its radius. Class instances representing the areas marked with the blue color on the image above are created. This area type can be called an inverted fillet.
Finally, areas marked with the letter C are subtracted from the inverted fillets (marked with the blue color) to form areas marked with the letter F. The latter areas also contain an arc in many cases. |
Sorry, there is certainly a double L there: fiLLet. |
Calculation of the intersection of a line and an arc (circle)The line is marked with the blue color on the image above. It is defined by the initial point
The dot product of the above expression:
Moving everything to one side:
It's a quadratic equation. Its discriminant:
If We are interested in the intersection point that is the closest to the point P. Then
The remaining step is to check that the line intersects the arc. Let |
What if the length of either or both of the last segments of the carriageways on image is less than the distances between the points |
It's been a long time! The last time I implemented fillets was in September 2022. I didn't really have a solution for this issue. If one or both legs of the angle were too short, the radius was iteratively reduced by 10% until a fit was possible. Like this, often the reduction was acceptable. I remember, before that, I tried to follow the roads segment by segment on both sides, extending them and hoping that eventually they would fit. But the results were weird. Additionally, even then, the streets were often still too short. |
I haven't checked it yet by myself, but doesn't a precise solution for a curve radius exist, so the curve fits to the length of the shortest leg length? |
I didn't think about that back then, but yes, it does exist. Given
If we take
|
Fillets make generating intersections more complicated.
There are a number of way to define a fillet (or an arc).
A possible way to define an arc is to give its start point, end point, the center of the arc and its radius. Generation of in-between points of an arc can be delegated to Geometry Nodes.
The text was updated successfully, but these errors were encountered: