Skip to main content
replaced http://mathematica.stackexchange.com/ with https://mathematica.stackexchange.com/
Source Link

The reason the B appears incorrectly is not because of the shape of G, but rather because the horizontal length of G is less than the vertical length of B, resulting in B being decapitated. Here's how the letters look at present when one is laid on top of the other at 90º:

enter image description here

Notice that in the actual GEB logo, they use a squarish font, which solves this problem. So a possible solution, in the absence of a square font, is to set the aspect ratio of each of the letter shapes to 1, so that they sit well with each other.

Here is a solution that uses Vitaliy's solutionsolution for extracting the outlines from letters.

letter[s_String] := ImageData@ Binarize@Graphics[{EdgeForm[None], FaceForm[Black], 
     First[First[ImportString[ExportString[Style[s, FontSize -> 24], "PDF"], 
        "PDF", "TextMode" -> "Outlines"]]]}, AspectRatio -> 1, ImageSize -> 100]

Now you can see that the shapes now line up correctly:

enter image description here

Proceeding with your RegionPlot3D code, but with slight modifications,

{g, e, b} = letter /@ {"G", "E", "B"};
RegionPlot3D[
 g[[Round[i], Round[j]]] == 0 && e[[Round[i], Round[k]]] == 0 && 
  b[[Round[j], Round[k]]] == 0, {i, 1, 100}, {j, 1, 100}, {k, 1, 100}]

we get a nice and pretty GEB logo that reproduces the B and all the other letters correctly.

enter image description here enter image description here enter image description here

The reason the B appears incorrectly is not because of the shape of G, but rather because the horizontal length of G is less than the vertical length of B, resulting in B being decapitated. Here's how the letters look at present when one is laid on top of the other at 90º:

enter image description here

Notice that in the actual GEB logo, they use a squarish font, which solves this problem. So a possible solution, in the absence of a square font, is to set the aspect ratio of each of the letter shapes to 1, so that they sit well with each other.

Here is a solution that uses Vitaliy's solution for extracting the outlines from letters.

letter[s_String] := ImageData@ Binarize@Graphics[{EdgeForm[None], FaceForm[Black], 
     First[First[ImportString[ExportString[Style[s, FontSize -> 24], "PDF"], 
        "PDF", "TextMode" -> "Outlines"]]]}, AspectRatio -> 1, ImageSize -> 100]

Now you can see that the shapes now line up correctly:

enter image description here

Proceeding with your RegionPlot3D code, but with slight modifications,

{g, e, b} = letter /@ {"G", "E", "B"};
RegionPlot3D[
 g[[Round[i], Round[j]]] == 0 && e[[Round[i], Round[k]]] == 0 && 
  b[[Round[j], Round[k]]] == 0, {i, 1, 100}, {j, 1, 100}, {k, 1, 100}]

we get a nice and pretty GEB logo that reproduces the B and all the other letters correctly.

enter image description here enter image description here enter image description here

The reason the B appears incorrectly is not because of the shape of G, but rather because the horizontal length of G is less than the vertical length of B, resulting in B being decapitated. Here's how the letters look at present when one is laid on top of the other at 90º:

enter image description here

Notice that in the actual GEB logo, they use a squarish font, which solves this problem. So a possible solution, in the absence of a square font, is to set the aspect ratio of each of the letter shapes to 1, so that they sit well with each other.

Here is a solution that uses Vitaliy's solution for extracting the outlines from letters.

letter[s_String] := ImageData@ Binarize@Graphics[{EdgeForm[None], FaceForm[Black], 
     First[First[ImportString[ExportString[Style[s, FontSize -> 24], "PDF"], 
        "PDF", "TextMode" -> "Outlines"]]]}, AspectRatio -> 1, ImageSize -> 100]

Now you can see that the shapes now line up correctly:

enter image description here

Proceeding with your RegionPlot3D code, but with slight modifications,

{g, e, b} = letter /@ {"G", "E", "B"};
RegionPlot3D[
 g[[Round[i], Round[j]]] == 0 && e[[Round[i], Round[k]]] == 0 && 
  b[[Round[j], Round[k]]] == 0, {i, 1, 100}, {j, 1, 100}, {k, 1, 100}]

we get a nice and pretty GEB logo that reproduces the B and all the other letters correctly.

enter image description here enter image description here enter image description here

added 179 characters in body
Source Link
rm -rf
  • 89.3k
  • 21
  • 297
  • 479

The reason the B appears incorrectly is not because of the shape of G, but rather because the horizontal length of G is less than the vertical length of B, which should ideally match if you were to reproduce itresulting in B being decapitated. Here's how the letters look at present when one is laid on top of the other at 90º:

enter image description here

Notice that in the actual GEB logo, they use a squarish font, which solves this problem. So a possible solution, in the absence of a square font, is to set the aspect ratio of each of the letter shapes to 1, so that they sit well with each other.

Here is a solution that uses Vitaliy's first solutionsolution for extracting the curvesoutlines from letters.

letter[s_String] := ImageData@ Binarize@Graphics[{EdgeForm[None], FaceForm[Black], 
     First[First[ImportString[ExportString[Style[s, FontSize -> 24], "PDF"], 
        "PDF", "TextMode" -> "Outlines"]]]}, AspectRatio -> 1, ImageSize -> 100]

Now you can see that the shapes now line up correctly:

enter image description here

Proceeding with theyour RegionPlot3D code, but makingwith slight modifications,

{g, e, b} = letter /@ {"G", "E", "B"};
RegionPlot3D[
 g[[Round[i], Round[j]]] == 0 && e[[Round[i], Round[k]]] == 0 && 
  b[[Round[j], Round[k]]] == 0, {i, 1, 100}, {j, 1, 100}, {k, 1, 100}]

we get a nice and pretty GEB logo that reproduces the B and all the other letters correctly.

enter image description hereenter image description here enter image description here enter image description here

The reason the B appears incorrectly is not because of the shape of G, but rather because the horizontal length of G is less than the vertical length of B, which should ideally match if you were to reproduce it. Here's how the letters look at present when one is laid on top of the other at 90º:

enter image description here

Notice that in the actual GEB logo, they use a squarish font, which solves this problem. So a possible solution, in the absence of a square font, is to set the aspect ratio of each of the letter shapes to 1, so that they sit well with each other.

Here is a solution that uses Vitaliy's first solution for extracting the curves.

letter[s_String] := ImageData@ Binarize@Graphics[{EdgeForm[None], FaceForm[Black], 
     First[First[ImportString[ExportString[Style[s, FontSize -> 24], "PDF"], 
        "PDF", "TextMode" -> "Outlines"]]]}, AspectRatio -> 1, ImageSize -> 100]

Now you can see that the shapes line up correctly:

enter image description here

Proceeding with the RegionPlot3D, but making slight modifications,

{g, e, b} = letter /@ {"G", "E", "B"};
RegionPlot3D[
 g[[Round[i], Round[j]]] == 0 && e[[Round[i], Round[k]]] == 0 && 
  b[[Round[j], Round[k]]] == 0, {i, 1, 100}, {j, 1, 100}, {k, 1, 100}]

we get a nice and pretty GEB logo that reproduces the B correctly.

enter image description here

The reason the B appears incorrectly is not because of the shape of G, but rather because the horizontal length of G is less than the vertical length of B, resulting in B being decapitated. Here's how the letters look at present when one is laid on top of the other at 90º:

enter image description here

Notice that in the actual GEB logo, they use a squarish font, which solves this problem. So a possible solution, in the absence of a square font, is to set the aspect ratio of each of the letter shapes to 1, so that they sit well with each other.

Here is a solution that uses Vitaliy's solution for extracting the outlines from letters.

letter[s_String] := ImageData@ Binarize@Graphics[{EdgeForm[None], FaceForm[Black], 
     First[First[ImportString[ExportString[Style[s, FontSize -> 24], "PDF"], 
        "PDF", "TextMode" -> "Outlines"]]]}, AspectRatio -> 1, ImageSize -> 100]

Now you can see that the shapes now line up correctly:

enter image description here

Proceeding with your RegionPlot3D code, but with slight modifications,

{g, e, b} = letter /@ {"G", "E", "B"};
RegionPlot3D[
 g[[Round[i], Round[j]]] == 0 && e[[Round[i], Round[k]]] == 0 && 
  b[[Round[j], Round[k]]] == 0, {i, 1, 100}, {j, 1, 100}, {k, 1, 100}]

we get a nice and pretty GEB logo that reproduces the B and all the other letters correctly.

enter image description here enter image description here enter image description here

Source Link
rm -rf
  • 89.3k
  • 21
  • 297
  • 479

The reason the B appears incorrectly is not because of the shape of G, but rather because the horizontal length of G is less than the vertical length of B, which should ideally match if you were to reproduce it. Here's how the letters look at present when one is laid on top of the other at 90º:

enter image description here

Notice that in the actual GEB logo, they use a squarish font, which solves this problem. So a possible solution, in the absence of a square font, is to set the aspect ratio of each of the letter shapes to 1, so that they sit well with each other.

Here is a solution that uses Vitaliy's first solution for extracting the curves.

letter[s_String] := ImageData@ Binarize@Graphics[{EdgeForm[None], FaceForm[Black], 
     First[First[ImportString[ExportString[Style[s, FontSize -> 24], "PDF"], 
        "PDF", "TextMode" -> "Outlines"]]]}, AspectRatio -> 1, ImageSize -> 100]

Now you can see that the shapes line up correctly:

enter image description here

Proceeding with the RegionPlot3D, but making slight modifications,

{g, e, b} = letter /@ {"G", "E", "B"};
RegionPlot3D[
 g[[Round[i], Round[j]]] == 0 && e[[Round[i], Round[k]]] == 0 && 
  b[[Round[j], Round[k]]] == 0, {i, 1, 100}, {j, 1, 100}, {k, 1, 100}]

we get a nice and pretty GEB logo that reproduces the B correctly.

enter image description here