Ejemplo n.º 1
0
/**
 * gts_triangle_is_ok:
 * @t: a #GtsTriangle.
 *
 * Returns: %TRUE if @t is a non-degenerate, non-duplicate triangle,
 * %FALSE otherwise.
 */
gboolean gts_triangle_is_ok (GtsTriangle * t)
{
    g_return_val_if_fail (t != NULL, FALSE);
    g_return_val_if_fail (t->e1 != NULL, FALSE);
    g_return_val_if_fail (t->e2 != NULL, FALSE);
    g_return_val_if_fail (t->e3 != NULL, FALSE);
    g_return_val_if_fail (t->e1 != t->e2 && t->e1 != t->e3 && t->e2 != t->e3,
                          FALSE);
    g_return_val_if_fail (gts_segments_touch (GTS_SEGMENT (t->e1),
                          GTS_SEGMENT (t->e2)),
                          FALSE);
    g_return_val_if_fail (gts_segments_touch (GTS_SEGMENT (t->e1),
                          GTS_SEGMENT (t->e3)),
                          FALSE);
    g_return_val_if_fail (gts_segments_touch (GTS_SEGMENT (t->e2),
                          GTS_SEGMENT (t->e3)),
                          FALSE);
    g_return_val_if_fail (GTS_SEGMENT (t->e1)->v1 != GTS_SEGMENT (t->e1)->v2,
                          FALSE);
    g_return_val_if_fail (GTS_SEGMENT (t->e2)->v1 != GTS_SEGMENT (t->e2)->v2,
                          FALSE);
    g_return_val_if_fail (GTS_SEGMENT (t->e3)->v1 != GTS_SEGMENT (t->e3)->v2,
                          FALSE);
    g_return_val_if_fail (GTS_OBJECT (t)->reserved == NULL, FALSE);
    g_return_val_if_fail (!gts_triangle_is_duplicate (t), FALSE);
    return TRUE;
}
Ejemplo n.º 2
0
static PyObject*
touches(PygtsSegment *self, PyObject *args)
{
  PyObject *s_;
  GtsSegment *s;

  SELF_CHECK

  /* Parse the args */
  if(! PyArg_ParseTuple(args, "O", &s_) ) {
    return NULL;
  }

  /* Convert to PygtsObjects */
  if(!pygts_segment_check(s_)) {
    PyErr_SetString(PyExc_TypeError,"expected a Segment");
    return NULL;
  }
  s = PYGTS_SEGMENT_AS_GTS_SEGMENT(s_);

  if(gts_segments_touch(PYGTS_SEGMENT_AS_GTS_SEGMENT(self),s)) {
    Py_INCREF(Py_True);
    return Py_True;
  }
  else {
    Py_INCREF(Py_False);
    return Py_False;
  }
}