# Twisted Cylinder (Hyperboloid of one sheet)

I want to create a mesh like this: with a vertex on every edge-crossing so that every face is kite (nearly rhombus) shaped.

The above image was created just by rotating the top of two cylinders in different directions and placing them on the same position. But here I wouldn't have these many small faces and the result of the overlapping twisted cylinders looks like this in solid display: Can you please tell me if there is a way the create these kite-faces. Is there a tool that automatically creates a new vertex and a face for every intersection of edges?

• For reference, this surface is called Hyperboloid of one sheet. The property that you've discovered (the surface can be approximated with the rotation of a long, thin flat polygon) makes this shape easy to build and it's the reason why powerplant cooling towers look like this. There are many experiments with this shape. – Eric Duminil Jul 22 '18 at 20:01

I think this solves the issue with moonbots answer. Use the TinyCAD addon to create vertices at the edge itersections

EDIT steps:

1. rotate top face 90 degrees (R, Z, 90)
2. duplicate (Shift-D) and mirror along any axis (e.g. Ctrl-M, X)
3. press W and select TinyCADXALL
4. press F to fill faces
5. press W and select Remove Doubles • It’s difficult to follow what’s going on in that gif. It would be good to improve the answer to describe the steps in words. – Rich Sedman Jul 22 '18 at 16:20
• @Pharap we must have posted it around the same time, I didn't see your answer when i added mine – Johan Apes Jul 22 '18 at 17:16
• Sorry then, there was only moonbots answer when I started making the gif to mine – Johan Apes Jul 22 '18 at 18:05
• @Pharap 4 minutes difference is negligible considering how long it takes to write an answer. It happens. – Mast Jul 23 '18 at 7:27

Edit: Ok this is not what you need. What you need is to use the TinyCad addon as explained in another answer. Anyway I thought you wanted this:

• Create a cylinder and subdivide it horizontally
• Triangulate with alt P
• Delete vertical and horizontal edges: Select an edge and shift G > Select Similar > Direction, or if it's not enough select the Edge Loop with the B selector then shift G > Select Similar > Direction. Delete with X > Delete > Edge Loop. Now you only have triangles
• Select the middle of your shape, activate the Proportional Editing, and squeeze with shift Z so it constraints on X and Z axis
• If the shape is not symmetrical you can cut the top or the bottom half and copy bottom/top, rotate it 180° and merge with its opposite

Maybe there are cleaner solutions, I don't know ;) • Nice answer, but I'm not sure that with this method it would be possible to achieve the OP shape: edges look straight and doesn't rely on the fibonacci spiral pattern – Carlo Jul 22 '18 at 15:00
• oh ok I've missed something then ;) – moonboots Jul 22 '18 at 15:02
• Thank you for this detailed post. It is almost what I want to achieve. As @Carlo pointed out, there is only one problem I have with your solution: If you select a chain of edges from top to bottom (Alt-Click) it is not a straight connection between the upper and the lower end. – quiliup Jul 22 '18 at 15:05
• so I guess you could find a solution with the following question: How can I add vertices to intersection of two edges? blender.stackexchange.com/questions/2976/… – moonboots Jul 22 '18 at 15:44

Take those two cylinders you've got, and apply the script discussed in this other answer to create points where the edges intersect each other:

How can I add vertices to intersection of two edges?

The script provided by @Zeffi:

import bmesh import bpy from mathutils import geometry

obj = bpy.context.object
me = obj.data
bm = bmesh.from_edit_mesh(me)

edges = [e for e in bm.edges if e.select]

if len(edges) == 2:
[[v1, v2], [v3, v4]] = [[v.co for v in e.verts] for e in edges]

iv = geometry.intersect_line_line(v1, v2, v3, v4)
iv = (iv + iv) / 2
bm.verts.new(iv)
bmesh.update_edit_mesh(me)   