hermespy-rt

Minimalistic signal processing ray-tracer in C
git clone https://git.ea.contact/hermespy-rt
Log | Files | Refs

materials.c (2910B)


      1 #include "../inc/materials.h"
      2 
      3 Material g_materials[NUM_G_MATERIALS] = {
      4   /* 0 */
      5   {3, "air",
      6     1.f, 0.f, 0.f, 0.001f,
      7     0.1f, 0.5f, 0.3f, 0.2f,
      8     2, 2},
      9   /* 1 */
     10   {8, "concrete",
     11     5.24f, 0.f, 0.0462f, 0.7822f,
     12     0.5f, 0.33f, 0.34f, 0.33f,
     13     4, 4},
     14   /* 2 */
     15   {5, "brick",
     16     3.91f, 0.f, 0.0238f, 0.16f,
     17     0.4f, 0.4f, 0.3f, 0.3f,
     18     3, 3},
     19   /* 3 */
     20   {12, "plasterboard",
     21     2.73f, 0.f, 0.0085f, 0.9395f,
     22     0.3f, 0.4f, 0.4f, 0.2f,
     23     3, 3},
     24   /* 4 */
     25   {4, "wood",
     26     1.99f, 0.f, 0.0047f, 1.0718f,
     27     0.2f, 0.5f, 0.3f, 0.2f,
     28     2, 2},
     29   /* 5 */
     30   {5, "glass",
     31     6.31f, 0.f, 0.0036f, 1.3394f,
     32     0.3f, 0.4f, 0.4f, 0.2f,
     33     3, 3},
     34   /* 6 */
     35   {5, "glass",
     36     5.79f, 0.f, 0.0004f, 1.658f,
     37     0.3f, 0.4f, 0.4f, 0.2f,
     38     3, 3},
     39   /* 7 */
     40   {13, "ceiling board",
     41     1.48f, 0.f, 0.0011f, 1.0750f,
     42     0.2f, 0.5f, 0.3f, 0.2f,
     43     2, 2},
     44   /* 8 */
     45   {13, "ceiling board",
     46     1.52f, 0.f, 0.0029f, 1.029f,
     47     0.2f, 0.5f, 0.3f, 0.2f,
     48     2, 2},
     49   /* 9 */
     50   {9, "chipboard",
     51     2.58f, 0.f, 0.0217f, 0.7800f,
     52     0.4f, 0.4f, 0.3f, 0.3f,
     53     3, 3},
     54   /* 10 */
     55   {7, "plywood",
     56     2.71f, 0.f, 0.33f, 0.f,
     57     0.3f, 0.5f, 0.3f, 0.2f,
     58     3, 3},
     59   /* 11 */
     60   {6, "marble",
     61     7.074f, 0.f, 0.0055f,
     62     0.9262f, 0.3f, 0.4f, 0.4f, 0.2f,
     63     3, 3},
     64   /* 12 */
     65   {10, "floorboard",
     66     3.66f, 0.f, 0.0044f, 1.3515f,
     67     0.3f, 0.4f, 0.4f, 0.2f,
     68     3, 3},
     69   /* 13 */
     70   {5, "metal",
     71     1.f, 0.f, 10000000.f, 0.f,
     72     0.f, 0.f, 1.f, 0.f,
     73     1, 1},
     74   /* 14 */
     75   {15, "very dry ground",
     76     3.f, 0.f, 0.00015f, 2.52f,
     77     0.4f, 0.3f, 0.4f, 0.3f,
     78     4, 4},
     79   /* 15 */
     80   {17, "medium dry ground",
     81     15.f, -0.1f, 0.035f, 1.63f,
     82     0.5f, 0.33f, 0.34f, 0.33f,
     83     4, 4},
     84   /* 16 */
     85   {10, "wet ground",
     86     30.f, -0.4f, 0.15f, 1.30f,
     87     0.5f, 0.33f, 0.34f, 0.33f,
     88     4, 4}
     89 };
     90 
     91 
     92 /* Map material name strings to material indices */
     93 typedef struct {
     94   /* Material name. Null-terminated string. Lower case. */
     95   const char *name;
     96   MaterialIndex index;
     97 } MaterialMap;
     98 MaterialMap g_str2material_map[] = {
     99   {"air", MATERIAL_AIR},
    100   {"concrete", MATERIAL_CONCRETE},
    101   {"brick", MATERIAL_BRICK},
    102   {"plasterboard", MATERIAL_PLASTERBOARD},
    103   {"wood", MATERIAL_WOOD},
    104   {"glass1", MATERIAL_GLASS1},
    105   {"glass2", MATERIAL_GLASS2},
    106   {"ceiling_board1", MATERIAL_CEILING_BOARD1},
    107   {"ceiling_board2", MATERIAL_CEILING_BOARD2},
    108   {"chipboard", MATERIAL_CHIPBOARD},
    109   {"plywood", MATERIAL_PLYWOOD},
    110   {"marble", MATERIAL_MARBLE},
    111   {"floorboard", MATERIAL_FLOORBOARD},
    112   {"metal", MATERIAL_METAL},
    113   {"very_dry_ground", MATERIAL_VERY_DRY_GROUND},
    114   {"medium_dry_ground", MATERIAL_MEDIUM_DRY_GROUND},
    115   {"wet_ground", MATERIAL_WET_GROUND}
    116 };
    117 MaterialIndex get_material_index(const char *name) {
    118   for (uint32_t i = 0; i < NUM_G_MATERIALS; ++i)
    119     if (strcmp(g_str2material_map[i].name, name) == 0)
    120       return g_str2material_map[i].index;
    121   return MATERIAL_AIR; /* Invalid material. Default to air */
    122 }