Beispiel #1
0
int		calculate_pixel(t_pov *pov, t_pixel *pixel,
				t_object *objects, t_coordinate *lightsource)
{
  t_coordinate	rayvector;
  int		i;
  int		color;
  t_intersect	intersect;
  t_intersect	intersectsaved;

  intersectsaved.k = 0.0;
  i = 0;
  calculate_vector(pov, pixel, &rayvector);
  color = 0x00000000;
  while (i < OBJECTS_NB)
    {
      intersect = calculate_intersection(pov, &rayvector, &objects[i]);
      if ((intersect.k < intersectsaved.k && intersect.k > 0) ||
	  (intersect.k > 0  && intersectsaved.k == 0))
	intersectsaved = intersect;
      i++;
    }
  if (intersectsaved.k != 0)
    color = find_color(&intersectsaved, pov, &rayvector, lightsource, objects);
  return (color);
}
Beispiel #2
0
std::vector<MyMarker *> calculate_vectors(vector<MyMarker *> const segment, MyMarker *parent){
    std::vector<MyMarker *> vectors(segment.size());
    MyMarker *marker;
    for (int i = 0; i < segment.size(); i++){
        // Calculating vector from parent to child, approximating tangent vector
        
        if (i > 0) parent = segment[i-1];

        if (i < segment.size()-1)
            marker = segment[i+1];
        else
            // Node is either terminal or bifurcation, so use vector from parent to self
            marker = segment[i];
        
        vectors[i] = calculate_vector(marker, parent);
        
        /* Calculating from current node to child
        vectors[i] = calculate_vector(marker, parent);
         */
        /*
        if (parent){
            double sum_sq = 0;
            vectors[i] = new MyMarker();
            vectors[i]->x = marker->x - parent->x;
            sum_sq += vectors[i].x * vectors[i].x;
            vectors[i]->y = marker->y - parent->y;
            sum_sq += vectors[i].y * vectors[i].y;
            vectors[i]->z = marker->z - parent->z;
            sum_sq += vectors[i].z * vectors[i].z;
            
            double mag = sqrt(sum_sq);
            vectors[i]->x /= mag;
            vectors[i]->y /= mag;
            vectors[i]->z /= mag;
        }else{
            vectors[i] = nullptr;
        }*/
    }
    return vectors;
};